Re: [PATCH 04/20] sysfs: Handle the general case of removing of directories with subdirectories

Eric W. Biederman
2009-05-23T20:10:17Z

Kay Sievers <kay.sievers@vrfy.org> writes:

> On Sat, May 23, 2009 at 08:33, Eric W. Biederman <ebiederm@xmission.com> wrote:
>
>> My plan going forward is to fix the ordering problems with deleting
>> /sys/dev/char and /sys/dev/block.  Add a WARN_ON if we delete a
>> non-empty directory.  Ensure we don't add something to an already
>> deleted directory.
>
> What's the problem in /sys/dev/? There are just a bunch of symlinks,
> one for every device with a dev_t, and all in flat directories, and no
> directory to remove.

device_shutdown called during reboot removes /sys/dev/block and /sys/dev/char.
The current sysfs_remove_dir (because it empties directories)
removes all of those symlinks.

The problem is that it is the device objects for each individual
device that owns those symlinks, and normally removes those symlinks.

Which means that in theory we could have double deletion going on.

In practice today it doesn't matter because this is at reboot.

And as far as that goes it is wrong to remove anything from sysfs during
device_shutdown so the fix is just to not call kobject_put there.

Eric