Al Viro
ddb595dfe4
cachefiles: fix the race between cachefiles_bury_object() and rmdir(2)
...
commit 169b803397 upstream.
the victim might've been rmdir'ed just before the lock_rename();
unlike the normal callers, we do not look the source up after the
parents are locked - we know it beforehand and just recheck that it's
still the child of what used to be its parent. Unfortunately,
the check is too weak - we don't spot a dead directory since its
->d_parent is unchanged, dentry is positive, etc. So we sail all
the way to ->rename(), with hosting filesystems _not_ expecting
to be asked renaming an rmdir'ed subdirectory.
The fix is easy, fortunately - the lock on parent is sufficient for
making IS_DEADDIR() on child safe.
Cc: stable@vger.kernel.org
Fixes: 9ae326a690 (CacheFiles: A cache that backs onto a mounted filesystem)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
Signed-off-by: David Howells <dhowells@redhat.com >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2018-11-10 07:48:34 -08:00
..
2018-09-09 19:55:55 +02:00
2017-11-02 11:10:55 +01:00
2018-05-30 07:51:47 +02:00
2018-07-08 15:30:51 +02:00
2018-09-19 22:43:48 +02:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-11-04 14:52:45 +01:00
2018-11-10 07:48:34 -08:00
2018-08-24 13:09:07 +02:00
2018-11-04 14:52:43 +01:00
2017-11-24 08:37:05 +01:00
2018-09-26 08:38:10 +02:00
2017-11-02 11:10:55 +01:00
2018-08-03 07:50:32 +02:00
2017-07-15 12:00:42 -07:00
2018-07-17 11:39:26 +02:00
2017-11-02 11:10:55 +01:00
2018-06-21 04:02:42 +09:00
2017-07-11 06:09:21 -04:00
2017-11-02 11:10:55 +01:00
2017-09-07 11:59:42 -07:00
2017-03-03 11:38:56 -08:00
2018-07-11 16:29:22 +02:00
2018-09-29 03:06:06 -07:00
2018-10-13 09:27:29 +02:00
2018-11-04 14:52:47 +01:00
2016-06-13 10:20:39 +02:00
2018-09-05 09:26:29 +02:00
2018-09-05 09:26:38 +02:00
2018-09-26 08:38:01 +02:00
2018-09-15 09:45:26 +02:00
2018-09-15 09:45:27 +02:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-04-19 08:56:21 +02:00
2018-10-03 17:00:57 -07:00
2018-07-11 16:29:16 +02:00
2018-05-30 07:51:47 +02:00
2018-08-09 12:16:39 +02:00
2018-02-16 20:22:59 +01:00
2018-02-03 17:39:08 +01:00
2017-11-02 11:10:55 +01:00
2018-03-28 18:24:43 +02:00
2018-09-26 08:38:09 +02:00
2018-02-03 17:39:08 +01:00
2018-11-10 07:48:33 -08:00
2018-05-30 07:51:47 +02:00
2017-11-02 11:10:55 +01:00
2018-11-10 07:48:34 -08:00
2017-11-02 11:10:55 +01:00
2018-11-04 14:52:41 +01:00
2017-11-02 11:10:55 +01:00
2016-12-24 11:46:01 -08:00
2018-06-26 08:06:33 +08:00
2018-11-10 07:48:33 -08:00
2018-10-10 08:54:28 +02:00
2018-09-26 08:38:05 +02:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-09-09 19:56:02 +02:00
2017-09-06 17:27:26 -07:00
2018-09-15 09:45:27 +02:00
2017-11-02 11:10:55 +01:00
2018-09-05 09:26:32 +02:00
2018-09-05 09:26:41 +02:00
2017-11-02 11:10:55 +01:00
2017-07-06 03:31:46 -04:00
2018-10-13 09:27:29 +02:00
2018-07-03 11:25:03 +02:00
2018-05-30 07:51:47 +02:00
2018-11-10 07:48:34 -08:00
2018-06-05 11:41:54 +02:00
2016-12-24 11:46:01 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-09-04 19:05:15 -04:00
2017-09-14 18:13:32 -07:00
2018-09-26 08:38:09 +02:00
2016-08-02 19:35:15 -04:00
2017-11-02 11:10:55 +01:00
2018-06-26 08:06:33 +08:00
2017-10-03 17:54:25 -07:00
2018-08-03 07:50:42 +02:00
2017-11-30 08:40:45 +00:00
2017-11-02 11:10:55 +01:00
2017-02-01 09:13:51 +01:00
2017-11-02 11:10:55 +01:00
2017-04-17 12:52:27 -04:00
2017-11-02 11:10:55 +01:00
2018-04-26 11:02:14 +02:00
2018-10-18 09:16:25 +02:00
2016-12-24 11:46:01 -08:00
2018-03-08 22:41:06 -08:00
2017-11-02 11:10:55 +01:00
2017-07-03 21:13:25 -07:00
2017-09-08 18:26:49 -07:00
2018-03-03 10:24:21 +01:00
2017-12-17 15:07:59 +01:00
2017-11-02 11:10:55 +01:00
2017-08-28 00:50:23 -04:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-03-02 08:42:35 +01:00
2018-05-16 10:10:25 +02:00
2018-07-17 11:39:27 +02:00
2017-09-13 09:11:44 -07:00
2018-11-10 07:48:33 -08:00
2018-10-03 17:00:53 -07:00
2017-07-12 16:26:00 -07:00
2016-10-24 08:12:35 -02:00
2017-07-06 07:02:29 -04:00
2018-10-03 17:00:53 -07:00
2017-11-02 11:10:55 +01:00
2018-02-22 15:42:25 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-04-19 08:56:19 +02:00
2018-10-20 09:48:52 +02:00
2017-11-02 11:10:55 +01:00
2017-09-05 12:53:12 +02:00
2018-02-16 20:23:05 +01:00
2017-05-23 08:41:17 -05:00
2017-02-04 00:01:06 +13:00
2017-03-02 08:42:31 +01:00
2017-11-02 11:10:55 +01:00
2018-11-10 07:48:33 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-02-22 15:42:28 +01:00
2017-11-02 11:10:55 +01:00
2017-09-04 19:05:15 -04:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-05-30 07:51:47 +02:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-08-06 16:20:49 +02:00
2017-11-02 11:10:55 +01:00
2018-10-10 08:54:27 +02:00