Eric Biggers
edf7ddbf1c
fs/namespace.c: WARN if mnt_count has become negative
...
Missing calls to mntget() (or equivalently, too many calls to mntput())
are hard to detect because mntput() delays freeing mounts using
task_work_add(), then again using call_rcu(). As a result, mnt_count
can often be decremented to -1 without getting a KASAN use-after-free
report. Such cases are still bugs though, and they point to real
use-after-frees being possible.
For an example of this, see the bug fixed by commit 1b0b9cc8d379
("vfs: fsmount: add missing mntget()"), discussed at
https://lkml.kernel.org/linux-fsdevel/20190605135401.GB30925@xxxxxxxxxxxxxxxxxxxxxxxxx/T/#u .
This bug *should* have been trivial to find. But actually, it wasn't
found until syzkaller happened to use fchdir() to manipulate the
reference count just right for the bug to be noticeable.
Address this by making mntput_no_expire() issue a WARN if mnt_count has
become negative.
Suggested-by: Miklos Szeredi <miklos@szeredi.hu>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2020-12-10 17:33:17 -05:00
..
2020-10-24 12:26:05 -07:00
2020-10-24 12:26:05 -07:00
2020-10-24 12:26:05 -07:00
2020-11-22 11:27:03 -08:00
2020-10-16 11:11:22 -07:00
2020-09-18 16:45:50 -04:00
2020-09-18 16:45:50 -04:00
2020-11-27 12:42:13 -08:00
2020-10-26 10:42:54 -07:00
2020-11-04 20:55:49 +01:00
2020-11-15 23:05:33 -06:00
2020-05-05 09:22:21 -06:00
2020-10-16 11:11:19 -07:00
2020-09-18 16:45:50 -04:00
2020-11-11 20:59:07 -08:00
2020-10-30 08:37:39 +01:00
2020-10-15 18:42:13 -07:00
2020-08-07 11:33:22 -07:00
2020-11-25 16:55:02 +01:00
2020-09-18 16:45:50 -04:00
2020-11-04 09:15:48 +08:00
2020-10-24 12:26:05 -07:00
2020-10-24 12:26:05 -07:00
2020-11-19 22:41:10 -05:00
2020-10-24 12:26:05 -07:00
2020-09-18 16:45:50 -04:00
2020-06-03 16:27:18 -07:00
2020-10-19 14:28:30 -07:00
2020-11-18 16:28:11 +01:00
2020-10-29 17:22:59 -05:00
2020-10-29 17:22:59 -05:00
2020-03-29 23:23:00 +02:00
2020-09-18 16:45:50 -04:00
2020-08-12 10:57:56 -07:00
2020-11-04 08:52:46 -08:00
2020-10-29 17:22:59 -05:00
2020-11-19 22:38:29 -05:00
2020-08-23 17:36:59 -05:00
2020-09-21 08:59:26 -07:00
2020-07-27 23:15:48 +02:00
2020-10-22 09:44:27 -07:00
2020-09-18 16:45:50 -04:00
2020-11-12 10:41:26 -05:00
2020-10-21 10:31:20 -04:00
2020-11-05 17:25:14 -05:00
2020-10-24 12:26:05 -07:00
2020-06-14 01:57:21 +09:00
2020-11-09 15:03:08 +01:00
2020-10-24 12:26:05 -07:00
2020-11-14 11:26:04 -08:00
2020-09-22 23:39:45 -04:00
2020-08-04 15:01:58 -04:00
2020-10-06 15:38:15 +02:00
2020-11-20 11:47:22 -08:00
2020-08-23 17:36:59 -05:00
2020-09-18 16:45:50 -04:00
2020-09-18 16:45:50 -04:00
2020-10-15 14:56:15 -07:00
2020-10-16 11:11:22 -07:00
2020-10-01 11:15:31 +02:00
2020-10-24 12:26:05 -07:00
2020-10-24 12:26:05 -07:00
2020-10-02 12:02:30 +02:00
2020-09-18 16:45:50 -04:00
2020-10-18 09:56:50 -07:00
2020-10-24 12:26:05 -07:00
2020-10-24 12:26:05 -07:00
2020-09-10 14:03:31 -07:00
2020-10-15 15:11:56 -07:00
2020-07-21 16:02:41 -07:00
2020-11-19 15:17:50 -08:00
2020-10-24 12:26:05 -07:00
2020-11-10 16:53:07 -08:00
2020-06-03 23:16:55 -04:00
2020-05-07 16:55:47 -05:00
2020-10-16 11:11:21 -07:00
2020-10-29 17:22:59 -05:00
2020-06-04 19:18:29 -07:00
2020-08-24 08:49:13 +10:00
2020-06-04 19:18:29 -07:00
2020-06-04 19:18:29 -07:00
2020-10-05 10:38:33 -06:00
2020-10-18 09:27:09 -07:00
2020-05-14 16:44:23 +02:00
2020-06-05 13:45:21 -07:00
2020-10-16 11:11:21 -07:00
2020-10-14 14:54:45 -07:00
2020-10-19 14:28:30 -07:00
2020-07-29 16:14:27 +02:00
2020-10-15 15:03:10 -07:00
2020-04-27 02:07:40 -04:00
2020-05-06 22:33:43 -04:00
2020-09-24 19:41:58 -04:00
2020-10-16 12:21:15 -07:00
2020-08-23 17:36:59 -05:00
2020-10-17 15:05:30 -06:00
2020-09-30 20:32:32 -06:00
2020-04-10 15:36:22 -07:00
2020-08-23 17:36:59 -05:00
2020-10-13 18:38:27 -07:00
2020-07-29 16:14:27 +02:00
2020-10-13 12:12:44 -07:00
2020-08-23 17:36:59 -05:00
2020-08-04 21:02:38 -04:00
2020-10-16 11:11:15 -07:00
2020-09-22 23:45:57 -04:00
2020-11-26 08:50:21 -07:00
2020-11-04 10:22:56 -07:00
2020-10-20 16:03:13 -06:00
2020-07-31 08:16:01 +02:00
2020-08-07 11:33:24 -07:00
2020-06-14 01:57:21 +09:00
2020-10-05 13:37:04 +02:00
2020-11-22 10:48:22 -08:00
2020-08-23 17:36:59 -05:00
2020-10-23 11:33:41 -07:00
2020-05-14 16:44:24 +02:00
2020-06-02 10:59:07 -07:00
2020-10-24 12:26:05 -07:00
2020-12-10 17:33:17 -05:00
2020-05-13 11:41:22 +02:00
2020-08-12 10:58:01 -07:00
2020-10-11 11:11:35 -07:00
2020-04-27 10:37:14 -04:00
2020-12-10 17:33:17 -05:00
2020-06-08 11:04:19 -07:00
2020-08-27 16:06:47 -04:00
2020-10-23 11:33:41 -07:00
2020-07-31 08:16:00 +02:00
2020-10-15 09:48:49 -07:00
2020-10-29 17:22:59 -05:00
2020-11-06 10:05:18 -08:00
2020-08-23 17:36:59 -05:00
2020-10-24 12:40:18 -07:00
2020-09-26 22:55:05 -04:00
2020-08-27 16:06:47 -04:00
2020-11-10 16:53:11 -08:00
2020-06-09 15:40:50 -07:00
2020-10-16 11:11:22 -07:00
2020-07-31 08:16:01 +02:00
2020-10-13 18:38:27 -07:00