Jeff Layton
5bb5e6ee6f
ceph: don't try to handle hashed dentries in non-O_CREAT atomic_open
...
If ceph_atomic_open is handed a !d_in_lookup dentry, then that means
that it already passed d_revalidate so we *know* that it's negative (or
at least was very recently). Just return -ENOENT in that case.
This also addresses a subtle bug in dentry handling. Non-O_CREAT opens
call atomic_open with the parent's i_rwsem shared, but calling
d_splice_alias on a hashed dentry requires the exclusive lock.
If ceph_atomic_open receives a hashed, negative dentry on a non-O_CREAT
open, and another client were to race in and create the file before we
issue our OPEN, ceph_fill_trace could end up calling d_splice_alias on
the dentry with the new inode with insufficient locks.
Cc: stable@vger.kernel.org
Reported-by: Al Viro <viro@zeniv.linux.org.uk >
Signed-off-by: Jeff Layton <jlayton@kernel.org >
Signed-off-by: Ilya Dryomov <idryomov@gmail.com >
2019-11-05 15:42:44 +01:00
..
2019-09-27 15:10:34 -07:00
2019-07-19 11:33:22 -07:00
2019-08-30 07:27:18 -07:00
2019-09-29 19:42:07 -07:00
2019-07-27 10:03:14 -04:00
2019-08-30 07:27:17 -07:00
2019-08-30 07:27:17 -07:00
2019-10-23 06:14:29 -04:00
2019-05-24 17:27:11 +02:00
2019-11-05 15:42:44 +01:00
2019-10-24 21:35:04 -05:00
2019-09-19 09:42:37 -07:00
2019-09-19 13:09:28 -07:00
2019-09-19 10:06:57 -07:00
2019-08-12 19:18:50 -07:00
2019-09-28 08:14:15 -07:00
2019-09-03 09:30:56 -04:00
2019-07-12 17:37:53 -07:00
2019-07-14 19:29:04 -07:00
2019-07-19 10:42:02 -07:00
2019-08-30 07:27:17 -07:00
2019-10-01 04:54:45 +08:00
2019-07-31 13:31:05 -06:00
2019-09-21 13:53:34 -07:00
2019-09-29 19:25:39 -07:00
2019-09-21 14:26:33 -07:00
2019-09-25 17:51:40 -07:00
2019-08-30 07:27:17 -07:00
2019-07-10 18:43:43 -07:00
2019-09-27 15:54:24 -07:00
2019-10-24 16:20:43 +02:00
2019-05-21 10:50:46 +02:00
2019-07-16 19:23:23 -07:00
2019-05-12 17:52:13 -04:00
2019-08-30 08:11:25 -07:00
2019-07-19 10:42:02 -07:00
2019-09-19 15:32:45 -07:00
2019-09-19 09:42:37 -07:00
2019-09-24 15:54:07 -07:00
2019-09-26 11:33:30 -07:00
2019-09-19 09:42:37 -07:00
2019-09-19 09:42:37 -07:00
2019-07-03 17:52:09 -04:00
2019-08-30 07:27:17 -07:00
2019-10-10 16:14:02 -04:00
2019-05-21 10:50:46 +02:00
2019-09-27 17:00:27 -07:00
2019-07-01 08:25:34 -07:00
2019-05-21 10:50:46 +02:00
2019-09-27 17:00:27 -07:00
2019-09-26 10:10:44 -07:00
2019-10-19 06:32:32 -04:00
2019-08-30 08:11:25 -07:00
2019-07-19 10:42:02 -07:00
2019-09-19 10:21:35 -07:00
2019-09-11 16:11:45 +02:00
2019-10-19 06:32:32 -04:00
2019-08-30 08:11:25 -07:00
2019-08-30 07:27:17 -07:00
2019-08-30 07:27:17 -07:00
2019-07-31 12:04:42 +02:00
2019-09-12 21:05:34 -04:00
2019-09-25 17:51:40 -07:00
2019-09-19 10:06:57 -07:00
2019-09-19 10:06:57 -07:00
2019-07-19 10:42:02 -07:00
2019-08-30 07:27:18 -07:00
2019-10-12 20:49:07 -04:00
2019-09-21 11:10:16 -07:00
2019-09-04 18:19:43 +02:00
2019-09-19 09:42:37 -07:00
2019-09-17 11:48:24 -04:00
2019-08-12 19:33:50 -07:00
2019-10-15 08:46:07 -07:00
2019-07-19 10:42:02 -07:00
2019-07-19 10:42:02 -07:00
2019-08-30 07:27:17 -07:00
2019-05-21 10:50:45 +02:00
2019-05-30 11:26:32 -07:00
2019-10-06 13:53:27 -07:00
2019-05-21 10:50:45 +02:00
2019-07-16 19:23:22 -07:00
2019-07-19 10:42:02 -07:00
2019-05-21 10:50:45 +02:00
2019-09-18 17:35:20 -07:00
2019-07-15 21:20:52 -07:00
2019-05-24 20:50:36 +02:00
2019-05-30 11:29:21 -07:00
2019-07-30 14:42:13 -07:00
2019-06-19 17:09:55 +02:00
2019-08-03 07:02:01 -07:00
2019-08-30 19:31:09 -04:00
2019-10-22 22:53:02 -07:00
2019-07-20 09:15:51 -07:00
2019-05-21 10:50:45 +02:00
2019-10-14 15:04:01 -07:00
2019-05-21 10:50:45 +02:00
2019-08-21 00:20:40 +02:00
2019-09-25 17:42:30 +02:00
2019-04-08 18:21:02 -05:00
2019-08-07 21:51:47 -04:00
2019-08-19 11:00:39 -04:00
2019-03-08 14:48:40 -08:00
2019-02-28 03:29:26 -05:00
2019-09-06 21:28:49 +02:00
2019-09-12 21:06:14 -04:00
2019-07-16 22:52:37 -04:00
2019-05-21 10:50:45 +02:00
2019-10-14 15:04:01 -07:00
2019-07-19 10:42:02 -07:00
2019-09-24 15:54:11 -07:00
2019-07-20 09:15:51 -07:00
2019-10-25 10:58:53 -06:00
2019-09-18 16:59:14 -07:00
2019-06-24 09:16:47 +10:00
2019-10-14 15:04:01 -07:00
2019-09-27 17:00:27 -07:00
2019-09-18 16:59:14 -07:00
2019-05-21 10:50:45 +02:00
2019-07-16 22:52:37 -04:00
2019-07-10 09:00:57 -06:00
2019-09-03 09:30:45 -04:00
2019-09-26 10:29:42 -07:00
2019-05-30 11:26:32 -07:00
2019-05-25 18:00:06 -04:00
2019-09-26 10:10:30 -07:00
2019-05-25 18:00:07 -04:00
2019-06-17 17:36:09 -04:00
2019-05-30 11:29:53 -07:00
2019-05-21 10:50:45 +02:00
2019-09-06 21:28:49 +02:00
2019-08-16 18:43:24 -07:00
2019-10-18 18:41:16 -04:00
2019-07-16 19:23:25 -07:00
2019-08-13 16:06:52 -07:00
2019-04-08 18:21:02 -05:00
2019-05-31 15:30:03 -06:00
2019-05-21 10:50:45 +02:00
2019-10-03 14:21:35 -07:00
2019-10-10 08:16:44 -07:00
2019-05-14 09:47:50 -07:00
2019-08-01 20:51:23 +02:00
2019-09-25 17:51:41 -07:00
2019-08-30 07:27:17 -07:00
2019-05-21 10:50:45 +02:00