Nick Piggin
2e2e88ea8c
fs: fix do_lookup false negative
...
fs: fix do_lookup false negative
In do_lookup, if we initially find no dentry, we take the directory i_mutex and
re-check the lookup. If we find a dentry there, then we revalidate it if
needed. However if that revalidate asks for the dentry to be invalidated, we
return -ENOENT from do_lookup. What should happen instead is an attempt to
allocate and lookup a new dentry.
This is probably not noticed because it is rare. It is only reached if a
concurrent create races in first (in which case, the dentry probably won't be
invalidated anyway), or if the racy __d_lookup has failed due to a
false-negative (which is very rare).
Fix this by removing code and have it use the normal reval path.
Signed-off-by: Nick Piggin <npiggin@kernel.dk>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2010-08-18 08:35:45 -04:00
..
2010-08-11 00:08:00 -04:00
2010-08-09 16:47:39 -04:00
2010-08-09 16:48:51 -04:00
2010-08-13 10:37:30 -07:00
2010-08-09 00:13:34 +02:00
2010-08-11 08:59:06 -07:00
2010-06-16 18:05:05 +02:00
2010-08-09 16:48:53 -04:00
2010-08-10 15:22:42 -07:00
2010-08-12 09:51:35 -07:00
2010-08-10 14:41:25 -07:00
2010-08-11 17:11:28 +00:00
2010-08-10 15:22:42 -07:00
2010-06-04 17:16:29 -04:00
2010-08-18 01:01:33 -04:00
2010-05-19 22:41:57 -04:00
2010-05-21 18:31:12 -04:00
2010-08-05 14:23:45 -05:00
2010-08-10 12:14:39 -07:00
2010-08-11 09:19:43 -07:00
2010-08-09 16:48:45 -04:00
2010-08-10 11:26:52 -07:00
2010-08-10 11:26:52 -07:00
2010-08-18 01:09:01 -04:00
2010-08-10 11:26:52 -07:00
2010-08-12 09:51:35 -07:00
2010-08-10 11:26:52 -07:00
2010-08-10 15:22:42 -07:00
2010-08-09 16:48:37 -04:00
2010-08-09 16:48:37 -04:00
2010-08-18 06:21:10 -04:00
2010-08-09 16:48:17 -04:00
2010-08-09 16:48:16 -04:00
2010-08-09 16:47:49 -04:00
2010-08-11 00:29:47 -04:00
2010-08-18 01:09:01 -04:00
2010-08-18 01:09:01 -04:00
2010-08-10 11:49:21 -07:00
2010-08-10 15:33:09 -07:00
2010-03-30 22:02:32 +09:00
2010-08-14 00:24:24 +02:00
2010-08-09 16:47:53 -04:00
2010-08-10 13:58:28 -07:00
2010-08-13 10:37:30 -07:00
2010-03-30 22:02:32 +09:00
2010-08-10 11:39:13 -07:00
2010-08-18 01:09:00 -04:00
2010-08-12 14:23:04 -07:00
2010-08-09 16:48:37 -04:00
2010-08-13 10:43:50 -07:00
2010-08-10 11:47:36 -07:00
2010-08-13 10:06:55 +02:00
2010-08-15 11:35:52 -07:00
2010-08-09 16:47:31 -04:00
2010-08-10 11:26:52 -07:00
2010-08-09 16:47:39 -04:00
2010-08-18 01:09:01 -04:00
2010-01-26 22:22:26 -05:00
2010-08-09 16:48:00 -04:00
2010-08-08 22:29:33 +00:00
2010-08-10 11:26:52 -07:00
2010-08-11 08:59:23 -07:00
2010-08-10 11:26:52 -07:00
2010-08-10 11:26:52 -07:00
2010-08-18 01:09:01 -04:00
2010-08-10 11:26:52 -07:00
2010-08-05 13:21:23 -07:00
2010-05-27 22:03:05 -04:00
2010-08-09 16:47:39 -04:00
2010-08-14 00:24:24 +02:00
2010-03-30 22:02:32 +09:00
2010-06-01 08:11:06 -07:00
2010-03-06 11:26:46 -08:00
2010-03-30 22:02:32 +09:00
2010-06-29 15:29:31 -07:00
2010-08-09 16:48:37 -04:00
2010-03-30 22:02:32 +09:00
2010-01-29 08:22:01 -08:00
2010-03-30 22:02:32 +09:00
2010-08-07 18:20:39 +02:00
2010-08-11 08:59:18 -07:00
2010-08-18 01:09:01 -04:00
2010-08-06 09:17:02 -07:00
2010-03-06 11:26:45 -08:00
2010-08-14 00:24:24 +02:00
2010-08-13 16:53:13 -07:00
2010-08-14 16:21:00 -07:00
2010-08-09 16:47:29 -04:00
2010-08-09 16:47:44 -04:00
2010-03-30 22:02:32 +09:00
2010-05-11 17:43:58 +02:00
2010-08-10 11:39:13 -07:00
2010-08-11 08:59:02 -07:00
2010-03-30 22:02:32 +09:00
2010-08-12 14:23:04 -07:00
2010-08-11 08:59:02 -07:00
2010-03-30 22:02:32 +09:00
2010-08-11 00:28:20 -04:00
2010-08-12 08:43:30 -07:00
2010-08-18 01:04:22 -04:00
2010-08-10 11:39:13 -07:00
2010-05-21 18:31:16 -04:00
2010-08-14 00:24:24 +02:00
2010-03-30 22:02:32 +09:00
2010-07-20 17:30:22 +02:00
2010-08-09 16:47:39 -04:00
2010-03-08 16:55:37 +01:00
2010-05-21 18:31:17 -04:00
2010-08-18 06:24:41 -04:00
2010-03-30 22:02:32 +09:00
2010-08-18 08:35:45 -04:00
2010-08-11 00:29:47 -04:00
2010-03-03 13:00:21 -05:00
2010-08-11 08:59:02 -07:00
2010-06-10 19:08:34 +02:00
2010-03-03 13:00:22 -05:00
2010-03-03 14:07:55 -05:00
2010-07-28 09:58:32 -04:00
2010-08-09 20:45:05 -07:00
2010-03-12 15:52:32 -08:00
2010-03-07 15:48:26 -08:00
2010-08-11 08:59:20 -07:00
2010-08-07 18:52:56 +02:00
2009-12-17 10:58:17 -05:00
2010-08-13 16:53:13 -07:00
2010-08-09 16:48:44 -04:00
2010-08-09 16:49:02 -04:00
2010-08-09 16:47:43 -04:00
2010-05-20 13:21:42 -07:00
2010-08-13 16:53:13 -07:00
2010-03-30 22:02:32 +09:00
2010-05-21 18:31:18 -04:00