Messages in this thread | | | Date | Thu, 11 Apr 2013 07:05:43 +0200 | From | Veaceslav Falico <> | Subject | Re: [PATCH] module: add kset_obj_exists() and use it |
| |
On Thu, Apr 11, 2013 at 11:28:06AM +0930, Rusty Russell wrote: >Greg KH <gregkh@linuxfoundation.org> writes: > >> On Tue, Apr 09, 2013 at 01:22:09PM +0200, Veaceslav Falico wrote: >>> Add a new function, kset_obj_exists(), which is identical to >>> kset_find_obj() but doesn't take a reference to the kobject >>> found and only returns bool if found/not found. >>> >>> The main purpose would be to avoid the possible race scenario, >>> when we could get the reference in between the kref_put() and >>> kobject_release() functions (i.e. kref_put() already ran, >>> refcount became 0, but the kobject_release() function still >>> didn't run, and we try to get via kobject_get() and thus ending >>> up with a released kobject). It can be triggered, for example, >>> by running insmod/rmmod bonding in parallel, which ends up in >>> a race between kset_obj_find() in mod_sysfs_init() and rmmod's >>> mod_sysfs_fini()/kobject_put(). >> >> As Rusty points out, this isn't a kobject issue that can be solved with >> a new api call, but rather, the user of the kobject code needs to be >> fixed, with something like his proposed patch instead. >> >> So, because of this, I can't take this patch, sorry. > >Greg, I'm shocked! Surely you've been doing this long enough to know >that we don't use that kind of language on lkml? > >To restore the list's reputation as a hostile pressure cooker powered by >the smouldering remains of flame-roasted newcomers, allow me to correct >your reply: > > "NAK. And you smell."
Got it :). Thank you for your input and your patch, I'll come back with a proper fix when I'll have one.
Thanks all.
> >Crisis averted, >Rusty. >PS. Thanks :)
| |