[PATCH 2.6] Fix dentry refcounting in sysfs_remove_group()

From: Maneesh Soni
Date: Tue Feb 17 2004 - 02:23:08 EST


Hello,

Please review the following patch fixing the dentry refcounting during
sysfs_remove_group().

Thanks
Maneesh



o The following patch fixes the dentry refcounting, during sysfs_remove_group()
and also adds the missing dput() for the "extra" ref taken during
sysfs_create() for the sub-directory dentry corresponding to attribute group.



fs/sysfs/dir.c | 2 ++
fs/sysfs/group.c | 5 +++--
2 files changed, 5 insertions(+), 2 deletions(-)

diff -puN fs/sysfs/dir.c~sysfs_remove_subdir-dentry-leak-fix fs/sysfs/dir.c
--- linux-2.6.3-rc4/fs/sysfs/dir.c~sysfs_remove_subdir-dentry-leak-fix 2004-02-17 11:48:24.000000000 +0530
+++ linux-2.6.3-rc4-maneesh/fs/sysfs/dir.c 2004-02-17 11:54:11.000000000 +0530
@@ -96,6 +96,8 @@ static void remove_dir(struct dentry * d
void sysfs_remove_subdir(struct dentry * d)
{
remove_dir(d);
+ /* release the "extra" ref taken during sysfs_create() */
+ dput(d);
}


diff -puN fs/sysfs/group.c~sysfs_remove_subdir-dentry-leak-fix fs/sysfs/group.c
--- linux-2.6.3-rc4/fs/sysfs/group.c~sysfs_remove_subdir-dentry-leak-fix 2004-02-17 11:48:59.000000000 +0530
+++ linux-2.6.3-rc4-maneesh/fs/sysfs/group.c 2004-02-17 11:49:37.000000000 +0530
@@ -68,12 +68,13 @@ void sysfs_remove_group(struct kobject *
if (grp->name)
dir = sysfs_get_dentry(kobj->dentry,grp->name);
else
- dir = kobj->dentry;
+ dir = dget(kobj->dentry);

remove_files(dir,grp);
- dput(dir);
if (grp->name)
sysfs_remove_subdir(dir);
+ /* release the ref. taken in this routine */
+ dput(dir);
}



_
--
Maneesh Soni
Linux Technology Center,
IBM Software Lab, Bangalore, India
email: maneesh@xxxxxxxxxx
Phone: 91-80-25044999 Fax: 91-80-5268553
T/L : 9243696
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/