X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=fs%2Fsysfs%2Fgroup.c;h=3796afdff40c0f6214b701177bfbf697b9d1b334;hb=54d71145a4548330313ca664a4a009772fe8b7dd;hp=1898a10e38ce8ccef26a687882c637f349ac5b29;hpb=d969135aae1434547f41853f0e8eaa622e8b8816;p=~andy%2Flinux diff --git a/fs/sysfs/group.c b/fs/sysfs/group.c index 1898a10e38c..3796afdff40 100644 --- a/fs/sysfs/group.c +++ b/fs/sysfs/group.c @@ -206,6 +206,15 @@ void sysfs_remove_group(struct kobject *kobj, struct sysfs_dirent *dir_sd = kobj->sd; struct sysfs_dirent *sd; + /* + * Sysfs directories are now removed recursively by + * sysfs_remove_dir(). This means that the function can be called + * for a group whose sysfs entry is already removed. In that case + * all its groups are guaranteed to be already removed. + */ + if (dir_sd->s_flags & SYSFS_FLAG_REMOVED) + return; + if (grp->name) { sd = sysfs_get_dirent(dir_sd, grp->name); if (!sd) {