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-12-08 14:51:16 -05:00
2016-06-07 18:14:32 -07:00
2016-06-01 12:15:47 -07:00
2015-11-16 20:38:43 -05:00
2015-11-13 09:24:40 -08:00
2016-06-01 12:15:48 -07:00
2015-09-10 13:29:01 -07:00
2015-11-20 16:17:32 -08:00
2016-05-04 14:48:41 -07:00
2016-02-25 12:01:14 -08:00
2015-12-01 15:45:05 -05:00
2016-06-24 10:18:20 -07:00
2016-03-03 15:07:09 -08:00
2015-12-12 10:15:34 -08:00
2015-11-16 09:43:54 -08:00
2016-06-07 18:14:37 -07:00
2015-11-13 18:02:30 -08:00
2015-11-20 16:17:32 -08:00
2015-11-11 02:11:02 -05:00
2016-04-12 09:08:58 -07:00
2015-11-13 18:02:30 -08:00
2015-09-10 13:29:01 -07:00
2015-11-13 20:34:32 -05:00
2016-03-03 15:07:12 -08:00
2016-06-01 12:15:54 -07:00
2016-02-25 12:01:22 -08:00
2016-05-18 17:06:54 -07:00
2016-04-12 09:08:53 -07:00
2016-03-16 08:42:58 -07:00
2015-11-09 15:11:24 -08:00
2015-11-11 20:11:28 -08:00
2015-11-06 17:50:42 -08:00
2016-03-16 08:42:59 -07:00
2016-04-20 15:42:13 +09:00
2016-04-12 09:09:03 -07:00
2015-11-11 09:45:24 -08:00
2015-11-05 19:34:48 -08:00
2015-11-06 17:50:42 -08:00
2016-05-18 17:06:44 -07:00
2016-04-20 15:42:12 +09:00
2016-06-24 10:18:20 -07:00
2015-11-02 13:41:52 -08:00
2016-04-12 09:08:56 -07:00
2015-10-16 11:42:28 -07:00
2015-11-13 18:02:30 -08:00
2015-11-13 20:34:33 -05:00
2015-11-13 21:53:18 -08:00
2015-11-23 21:11:08 -05:00
2015-11-04 22:13:45 -05:00
2015-11-13 18:02:30 -08:00
2016-02-25 12:01:18 -08:00
2015-09-09 10:43:12 -07:00
2016-06-07 18:14:38 -07:00
2015-09-04 16:54:41 -07:00
2015-11-10 12:07:22 -08:00
2015-11-11 09:45:24 -08:00
2015-12-04 11:02:17 -07:00
2015-11-11 02:19:33 -05:00
2015-10-23 23:26:43 +02:00
2016-04-12 09:08:58 -07:00
2015-11-16 23:54:45 -08:00
2016-06-24 10:18:21 -07:00
2016-03-03 15:07:28 -08:00
2016-04-12 09:08:58 -07:00
2015-11-05 23:05:32 -08:00
2016-04-12 09:09:04 -07:00
2015-11-11 02:18:27 -05:00
2015-11-16 23:54:45 -08:00
2016-03-03 15:07:12 -08:00
2015-10-15 10:33:21 -04:00
2015-11-06 17:50:42 -08:00
2016-05-18 17:06:51 -07:00
2015-09-11 15:21:34 -07:00
2016-05-18 17:06:48 -07:00
2016-06-07 18:14:35 -07:00
2016-05-11 11:21:19 +02:00
2015-11-13 20:34:32 -05:00
2016-04-12 09:08:55 -07:00
2015-11-06 17:50:42 -08:00
2016-04-12 09:08:55 -07:00
2015-11-09 15:11:24 -08:00
2016-03-09 15:34:52 -08:00
2015-11-06 17:50:42 -08:00
2016-02-25 12:01:25 -08:00
2016-03-16 08:43:01 -07:00
2015-11-13 20:34:33 -05:00