Subject: Re: [PATCH v3 19/20] coresight: add try_get_module() in coresight_grab_device()

From: Greg KH <[email-masked]>
Date: Wed, 22 Jul 2020 12:48:59 +0200

On Wed, Jul 22, 2020 at 11:49:48AM +0100, Suzuki K Poulose wrote:
> Hi Tingwei,
> 
> On 07/17/2020 06:45 AM, Tingwei Zhang wrote:
> > When coresight device is in an active session, driver module of
> > that device should not be removed. Use try_get_module() in
> > coresight_grab_device() to prevent module to be unloaded.
> > 
> 
> Is this really sufficient ? AFAIU, a device could be removed, but the
> module may still be alive due to the refcount on the module. This
> could imply that we have stale pointers in the _path_, which could
> lead to corruption elsewhere. Should we do a get/put_device() instead ?

Remember there are two separate things here, code and data.  There are
two different reference counts for them, do not confuse the two.

get/put is needed when you have a reference to the data, module stuff is
when you are calling into code.

But note that you do not always need to grab a reference count to the
module, as long as the module can properly tear the data down when it is
asked to be removed.  Look at networking drivers as a great example of
that.

thanks,

greg k-h

_______________________________________________
linux-arm-kernel mailing list
[email-masked]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel