Files
linux/fs
Al Viro 2b11d80e1a fix d_walk()/non-delayed __d_free() race
commit 3d56c25e3b upstream.

Ascend-to-parent logics in d_walk() depends on all encountered child
dentries not getting freed without an RCU delay.  Unfortunately, in
quite a few cases it is not true, with hard-to-hit oopsable race as
the result.

Fortunately, the fix is simiple; right now the rule is "if it ever
been hashed, freeing must be delayed" and changing it to "if it
ever had a parent, freeing must be delayed" closes that hole and
covers all cases the old rule used to cover.  Moreover, pipes and
sockets remain _not_ covered, so we do not introduce RCU delay in
the cases which are the reason for having that delay conditional
in the first place.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-06-24 10:18:21 -07:00
..
2015-06-30 19:44:57 -07:00
2015-06-23 18:02:01 -04:00
2016-06-01 12:15:47 -07:00
2015-06-25 17:00:42 -07:00
2016-03-03 15:07:12 -08:00
2016-04-20 15:42:13 +09:00
2016-04-20 15:42:12 +09:00
2015-04-11 22:29:40 -04:00
2015-11-13 20:34:33 -05:00
2015-11-23 21:11:08 -05:00
2014-11-19 13:01:20 -05:00
2015-11-16 23:54:45 -08:00
2015-11-11 02:18:27 -05:00
2015-11-16 23:54:45 -08:00
2015-08-12 15:28:45 -05:00
2016-05-18 17:06:48 -07:00
2014-08-26 09:35:56 +02:00
2015-11-13 20:34:33 -05:00