Re: [PATCH 2.6.24-rc7 2/2] sysfs: fix bugs in sysfs_rename/move_dir()

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Linus Torvalds <torvalds@...>
Cc: Linux Kernel <linux-kernel@...>, Al Viro <viro@...>, Gabor Gombas <gombasg@...>, Greg KH <greg@...>, Dave Young <hidave.darkstar@...>, <bluez-devel@...>, <cornelia.huck@...>
Date: Wednesday, January 16, 2008 - 2:47 am

Linus Torvalds wrote:

I'm pretty sure.  I've seen dentry blowing up due to early release &&
compared it with older code.  It was my mistake during restructuring
error path.  The only user of sysfs_move_dir() was S390 Cornelia works
on (cc'd).  Cornelia is usually very good at spotting and debugging
sysfs bugs.  Dunno how it got slipped this time.


Before dput() bug was introduced, it worked although error handling path
was broken.


It will fall in infinite loop if old_parent == new_parent and for the
question, I suppose so.  Cornelia, right?


sysfs currently doesn't depend on VFS locking.  VFS locking is done just
to keep VFS layer happy.  sysfs_dirent hierarchy is protected by
sysfs_mutex and renaming/moving are protected by sysfs_rename_mutex.  As
both ops are under rename_mutex, I think the above code just can grab
both mutexes in any order.  It's probably a remnant of the days when
sysfs used VFS locking to protect internal structures.

s390 was the only user of the move interface till now and through all
the recent sysfs change, it didn't receive enough attention other than
Cornelia's testing.  Eventually, I think sysfs_rename_dir() and
sysfs_move_dir() should be merged into sysfs_move() but for the current
two users, I don't see anything wrong with the locking.

Thanks.

-- 
tejun
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: [PATCH 2.6.24-rc7 2/2] sysfs: fix bugs in sysfs_rename/m..., Tejun Heo, (Wed Jan 16, 2:47 am)