Messages in this thread | | | Subject | Re: [PATCH] evdev: Release eventual input device grabs when getting disconnected | From | Kay Sievers <> | Date | Tue, 01 Apr 2008 00:46:07 +0200 |
| |
On Mon, 2008-03-31 at 23:27 +0200, Jiri Kosina wrote: > On Mon, 31 Mar 2008, Greg KH wrote: > > > > Greg, please look at the change again. Before kobject_put(kobj->parent) > > > was done in kobject_cleanup() and so the parent would only be freed when > > > all its children are gone. Now parent is deleted early, even if its > > > children are still referenced by other users. This is lifetime rule > > > change and should really be announced as such. > > Ugh, this was done because of scsi, they required that if you really > > were deleting the parent, you wanted it gone. > > What is the exact meaning of "gone" here please?
Gone means, that if you remove a device from sysfs, you drop the implicit reference to the parent device, as this is no longer needed.
You are expected to keep a ref to the parent object (same way as to any other used object) if you need to access the data. Removed objects are isolated now, which means that you just pin their data and not their parents.
This is the expected behavior and makes it possible to resolve refcount loops (parent ref's child) which could not be released with the implicit parent ref that was only released on object cleanup.
Thanks, Kay
| |