Tejun Heo dd14cbc994 sysfs: fix race condition around sd->s_dentry, take#2
Allowing attribute and symlink dentries to be reclaimed means
sd->s_dentry can change dynamically.  However, updates to the field
are unsynchronized leading to race conditions.  This patch adds
sysfs_lock and use it to synchronize updates to sd->s_dentry.

Due to the locking around ->d_iput, the check in sysfs_drop_dentry()
is complex.  sysfs_lock only protect sd->s_dentry pointer itself.  The
validity of the dentry is protected by dcache_lock, so whether dentry
is alive or not can only be tested while holding both locks.

This is minimal backport of sysfs_drop_dentry() rewrite in devel
branch.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2007-06-12 16:08:47 -07:00
..
2007-05-21 09:18:19 -07:00
2007-05-17 05:23:04 -07:00
2007-05-21 09:18:19 -07:00
2007-05-31 07:58:14 -07:00
2007-05-17 05:23:04 -07:00
2007-05-17 05:23:04 -07:00
2007-06-08 14:55:14 +00:00
2007-05-21 09:18:19 -07:00
2007-05-21 09:18:19 -07:00
2007-05-08 11:14:59 -07:00
2007-05-17 05:23:04 -07:00
2007-05-17 05:23:04 -07:00
2007-05-17 05:23:04 -07:00
2007-05-17 05:23:04 -07:00
2007-05-23 20:14:13 -07:00
2007-05-21 09:18:19 -07:00
2007-05-21 09:18:19 -07:00
2007-05-21 09:18:19 -07:00
2007-05-08 11:14:57 -07:00
2007-05-21 09:18:19 -07:00
2007-05-17 05:23:04 -07:00
2007-05-17 05:23:04 -07:00
2007-05-09 08:58:16 +02:00
2007-05-09 08:58:16 +02:00
2007-05-17 05:23:04 -07:00
2007-05-14 19:33:46 -04:00
2007-05-21 09:18:19 -07:00
2007-05-21 09:18:19 -07:00
2007-05-21 09:18:19 -07:00
2007-05-17 05:23:04 -07:00
2007-05-21 21:38:17 -07:00
2007-05-17 05:23:04 -07:00
2007-05-17 05:23:04 -07:00
2007-05-17 05:23:04 -07:00
2007-05-21 09:18:19 -07:00
2007-05-17 05:23:04 -07:00
2007-06-01 08:18:28 -07:00
2007-05-17 05:23:04 -07:00
2007-05-21 09:18:19 -07:00
2006-10-04 06:51:26 -06:00
2007-05-17 05:23:04 -07:00
2006-12-07 08:39:25 -08:00
2007-05-18 13:09:34 -07:00
2007-05-15 08:54:00 -07:00
2007-05-23 20:14:13 -07:00
2007-05-21 09:18:19 -07:00
2007-05-08 11:15:01 -07:00
2007-05-17 05:23:04 -07:00
2007-05-08 11:15:09 -07:00
2007-06-04 13:25:10 -07:00
2007-05-09 08:58:15 +02:00
2007-05-09 06:44:57 +02:00
2007-05-17 05:23:04 -07:00
2007-05-11 08:29:36 -07:00
2006-12-07 08:39:25 -08:00
2007-05-08 20:10:00 -07:00
2006-10-01 00:39:19 -07:00
2007-05-09 07:10:02 +02:00
2007-05-08 11:15:01 -07:00
2007-05-08 11:15:04 -07:00
2007-05-18 13:09:34 -07:00
2007-05-08 11:15:18 -07:00