Files
kernel-tenderloin-3.0/include/linux
Al Viro dfef6dcd35 unfuck proc_sysctl ->d_compare()
a) struct inode is not going to be freed under ->d_compare();
however, the thing PROC_I(inode)->sysctl points to just might.
Fortunately, it's enough to make freeing that sucker delayed,
provided that we don't step on its ->unregistering, clear
the pointer to it in PROC_I(inode) before dropping the reference
and check if it's NULL in ->d_compare().

b) I'm not sure that we *can* walk into NULL inode here (we recheck
dentry->seq between verifying that it's still hashed / fetching
dentry->d_inode and passing it to ->d_compare() and there's no
negative hashed dentries in /proc/sys/*), but if we can walk into
that, we really should not have ->d_compare() return 0 on it!
Said that, I really suspect that this check can be simply killed.
Nick?

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-08 02:22:27 -05:00
..
2011-01-20 18:30:17 -08:00
2011-01-20 18:30:17 -08:00
2010-11-23 20:14:46 +00:00
2011-01-10 08:51:44 -08:00
2011-01-15 20:07:45 -05:00
2011-01-13 08:03:12 -08:00
2010-11-10 14:54:09 +01:00
2010-11-10 14:54:09 +01:00
2010-12-13 16:11:13 -08:00
2010-11-29 08:35:12 +11:00
2010-12-16 17:53:38 +01:00
2011-01-10 08:51:44 -08:00
2011-01-12 20:16:43 -05:00
2011-01-17 03:26:26 -05:00
2010-12-08 10:30:34 -08:00
2011-01-10 08:51:44 -08:00
2011-01-07 17:50:27 +11:00
2011-01-07 17:50:23 +11:00
2010-12-07 20:16:56 +01:00
2011-01-24 14:45:11 +10:30
2011-01-10 07:38:53 -08:00
2010-11-15 22:40:38 +01:00
2011-01-10 22:11:23 +01:00
2010-11-16 10:58:30 -08:00
2010-11-24 11:16:42 -08:00
2011-01-21 11:55:31 +01:00
2010-12-09 20:17:07 -08:00
2011-01-13 17:32:31 -08:00
2011-02-01 08:23:22 +10:00
2011-01-13 17:32:47 -08:00
2011-02-13 16:54:24 -08:00
2011-01-24 14:45:11 +10:30
2010-12-22 10:27:53 +01:00
2010-11-12 07:55:32 -08:00
2011-01-14 13:12:45 +00:00
2010-12-06 11:03:46 -08:00
2011-01-13 17:32:41 -08:00
2011-01-13 17:32:46 -08:00
2011-01-13 17:32:43 -08:00
2011-01-16 13:47:07 -05:00
2011-01-13 21:44:34 -08:00
2011-01-10 15:40:52 -05:00
2011-01-13 17:32:43 -08:00
2011-01-16 13:47:07 -05:00
2010-12-16 11:36:43 +01:00
2010-12-10 15:06:43 +01:00
2011-01-13 08:03:21 -08:00
2011-01-14 02:36:43 +00:00
2010-11-15 13:24:06 -05:00
2011-01-13 08:03:18 -08:00
2011-01-13 17:32:42 -08:00
2011-01-07 17:50:27 +11:00
2011-01-13 08:03:19 -08:00
2011-01-13 17:32:42 -08:00
2011-03-08 02:22:27 -05:00
2011-02-28 18:00:31 -08:00
2011-01-13 08:03:20 -08:00
2010-11-29 08:55:25 +11:00
2010-11-29 08:55:22 +11:00
2010-12-20 09:37:33 +01:00
2010-12-16 10:05:06 -08:00
2011-01-24 14:45:11 +10:30
2010-11-15 13:25:02 -05:00
2011-01-13 08:03:24 -08:00