diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2010-05-01 10:23:13 -0400 |
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2010-05-02 14:13:54 -0400 |
| commit | 360c3e7265901a0231f40121a6ff3fc78172334f (patch) | |
| tree | 4ea61d260337a5955480be18597ef92732ba39ee /lib/spinlock_debug.c | |
| parent | 0dc6b732a4543ecf6be4251fa1615bfca49ebd1a (diff) | |
fs: Prevent dput race
dput() drops dentry->d_lock when it fails to lock inode->i_lock or
parent->d_lock. dentry->d_count is 0 at this point so dentry kann be
killed and freed by someone else. This leaves dput with a stale
pointer in the retry code which results in interesting kernel crashes.
Prevent this by incrementing dentry->d_count before dropping the
lock. Go back to start after dropping the lock so d_count is
decremented again.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'lib/spinlock_debug.c')
0 files changed, 0 insertions, 0 deletions
