Al Viro
97242f99a0
link_path_walk(): be careful when failing with ENOTDIR
...
In RCU mode we might end up with dentry evicted just we check
that it's a directory. In such case we should return ECHILD
rather than ENOTDIR, so that pathwalk would be retries in non-RCU
mode.
Breakage had been introduced in commit b18825a - prior to that
we were looking at nd->inode, which had been fetched before
verifying that ->d_seq was still valid. That form of check
would only be satisfied if at some point the pathname prefix
would indeed have resolved to a non-directory. The fix consists
of checking ->d_seq after we'd run into a non-directory dentry,
and failing with ECHILD in case of mismatch.
Note that all branches since 3.12 have that problem...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2015-08-01 20:18:38 -04:00
..
2015-07-12 11:22:05 -04:00
2015-06-30 19:44:57 -07:00
2015-07-04 19:36:06 -07:00
2015-05-11 10:50:17 -04:00
2015-06-23 18:02:01 -04:00
2015-07-04 19:36:06 -07:00
2015-04-26 17:22:07 -07:00
2015-07-17 21:46:57 -07:00
2015-06-23 18:01:30 -04:00
2015-07-04 19:36:06 -07:00
2015-06-29 14:50:22 -05:00
2015-06-23 18:01:59 -04:00
2015-07-17 16:39:53 -07:00
2015-07-04 19:36:06 -07:00
2015-06-30 19:44:58 -07:00
2015-05-11 10:50:17 -04:00
2015-07-09 11:42:21 -07:00
2015-05-06 10:57:37 -07:00
2015-06-25 17:00:42 -07:00
2015-06-23 18:02:00 -04:00
2015-02-22 11:38:41 -05:00
2015-07-04 19:36:06 -07:00
2015-06-24 20:07:10 -07:00
2015-07-09 11:42:21 -07:00
2015-06-25 16:00:17 -07:00
2015-06-02 08:33:34 -06:00
2015-06-23 18:02:00 -04:00
2015-04-02 14:28:53 +01:00
2015-07-04 19:36:06 -07:00
2015-06-27 09:47:46 -07:00
2015-07-04 19:36:06 -07:00
2015-07-04 19:36:06 -07:00
2015-06-22 12:51:21 -07:00
2015-07-09 13:35:31 -07:00
2015-06-24 17:49:41 -07:00
2015-04-15 15:06:57 -04:00
2015-06-27 09:41:50 -07:00
2015-07-04 19:36:06 -07:00
2015-07-16 16:28:28 -07:00
2015-07-03 15:20:57 -07:00
2015-04-21 16:16:02 -04:00
2015-05-10 22:18:28 -04:00
2015-07-04 19:36:06 -07:00
2015-06-14 11:31:39 -04:00
2015-07-13 06:29:11 -04:00
2015-06-22 14:15:05 -04:00
2015-07-09 11:42:21 -07:00
2015-07-21 16:06:53 -07:00
2015-07-04 19:36:06 -07:00
2015-07-09 11:42:21 -07:00
2015-05-28 18:25:19 -07:00
2015-07-12 11:22:05 -04:00
2015-07-18 10:49:57 -07:00
2015-07-03 15:20:57 -07:00
2015-06-23 18:02:00 -04:00
2015-04-26 17:22:07 -07:00
2015-04-15 15:06:57 -04:00
2015-06-26 09:52:05 -07:00
2015-04-11 22:29:40 -04:00
2015-06-23 18:01:59 -04:00
2015-07-03 15:20:57 -07:00
2015-06-23 18:02:00 -04:00
2015-07-04 19:36:06 -07:00
2015-06-25 14:11:34 -07:00
2015-07-09 16:38:57 +02:00
2015-07-04 19:36:06 -07:00
2015-07-04 19:36:06 -07:00
2015-04-16 23:27:56 -04:00
2015-02-20 04:03:58 -05:00
2015-07-04 19:36:06 -07:00
2015-04-26 17:22:07 -07:00
2015-07-04 19:36:06 -07:00
2015-06-02 09:22:34 -06:00
2015-07-09 11:42:21 -07:00
2015-07-04 19:36:06 -07:00
2015-07-04 19:36:06 -07:00
2015-07-12 11:27:04 -04:00
2015-04-24 15:45:28 -04:00
2015-02-12 18:54:09 -08:00
2015-02-17 14:34:52 -08:00
2015-02-13 21:21:40 -08:00
2015-05-12 22:03:44 +02:00
2015-06-02 10:29:07 -07:00
2015-06-23 18:02:00 -04:00
2015-07-01 02:31:08 -04:00
2015-04-09 11:39:55 -05:00
2015-07-23 13:36:44 -06:00
2015-07-04 19:36:06 -07:00
2015-06-19 03:19:32 -04:00
2015-02-10 14:30:30 -08:00
2015-04-10 15:08:35 -07:00
2015-04-14 16:49:05 -07:00
2015-07-04 19:36:06 -07:00
2015-07-13 06:29:11 -04:00
2015-05-31 13:23:08 +02:00
2015-06-30 19:44:56 -07:00
2015-06-02 08:40:20 -06:00
2015-08-01 20:18:38 -04:00
2015-07-23 11:31:15 -05:00
2015-04-15 15:06:58 -04:00
2015-06-23 18:01:09 -04:00
2015-04-15 15:06:58 -04:00
2015-04-02 20:34:20 -05:00
2015-07-22 20:33:27 -05:00
2015-06-23 18:01:07 -04:00
2015-06-30 19:44:56 -07:00
2015-04-11 22:29:46 -04:00
2015-05-19 08:32:00 +02:00
2015-07-04 19:36:06 -07:00
2015-06-24 20:47:21 -07:00
2015-04-15 15:06:59 -04:00
2015-07-01 01:50:06 -04:00
2015-02-05 02:45:00 -05:00
2015-05-21 13:28:47 -04:00