BUG: Problem with your patches for sysfs from 2 weeks ago

From: Alan Stern
Date: Sat Mar 27 2004 - 17:27:19 EST


I've been tracing a problem with sysfs that starting showing up just
recently, and it seems likely to have originated with your patches from a
couple of weeks ago. I can't tell exactly what's wrong or fix it because
I don't understand the filesystem layer well enough.

The problem I found (there may be others) shows up when trying to delete a
nonexistent symlink -- presumably trying to delete a nonexistent file
would have a similar result. The code in sysfs_hash_and_remove() does a
lookup on the nonexistent name and sysfs_get_dentry() returns a
newly-allocated dentry. Creating the new entry increments the parent
directory's d_count, of course. But at the end of the routine, when
dput() is called for the new dentry, the parent's d_count does _not_ get
decremented. The new dentry is placed on the dentry_unused list and the
parent is left with an anomalously large d_count. This doesn't ever seem
to get resolved, and when the directory's kobject is deleted the reference
you added doesn't get dropped.

Alan Stern

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/