Re: [PATCH] drivers/staging/gasket: Use refcount_read()

From: Greg Kroah-Hartman
Date: Sat Jul 07 2018 - 03:54:11 EST


On Fri, Jul 06, 2018 at 11:43:10PM -0700, Todd Poynor wrote:
> From: Todd Poynor <toddpoynor@xxxxxxxxxx>
>
> Use the refcount_read accessor function, avoid reaching into refcount
> and atomic struct fields.
>
> Signed-off-by: Todd Poynor <toddpoynor@xxxxxxxxxx>
> ---
> drivers/staging/gasket/gasket_sysfs.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/staging/gasket/gasket_sysfs.c b/drivers/staging/gasket/gasket_sysfs.c
> index d45098c90b4b..b5cdc180772a 100644
> --- a/drivers/staging/gasket/gasket_sysfs.c
> +++ b/drivers/staging/gasket/gasket_sysfs.c
> @@ -122,7 +122,7 @@ static void put_mapping(struct gasket_sysfs_mapping *mapping)
> }
>
> mutex_lock(&mapping->mutex);
> - if (mapping->refcount.refcount.refs.counter == 0)
> + if (refcount_read(&mapping->refcount.refcount) == 0)
> gasket_nodev_error("Refcount is already 0!");
> if (kref_put(&mapping->refcount, release_entry)) {
> gasket_nodev_info("Removing Gasket sysfs mapping, device %s",

Thanks for the patch, but ugh, why in the world is this driver even
doing this type of thing? Odds are all of these reference counting
checks can be removed, something else to add to the "todo" file...

thanks,

greg k-h