David Howells
648895da69
watch_queue: Fix filter limit check
...
commit c993ee0f9f81caf5767a50d1faeba39a0dc82af2 upstream.
In watch_queue_set_filter(), there are a couple of places where we check
that the filter type value does not exceed what the type_filter bitmap
can hold. One place calculates the number of bits by:
if (tf[i].type >= sizeof(wfilter->type_filter) * 8)
which is fine, but the second does:
if (tf[i].type >= sizeof(wfilter->type_filter) * BITS_PER_LONG)
which is not. This can lead to a couple of out-of-bounds writes due to
a too-large type:
(1) __set_bit() on wfilter->type_filter
(2) Writing more elements in wfilter->filters[] than we allocated.
Fix this by just using the proper WATCH_TYPE__NR instead, which is the
number of types we actually know about.
The bug may cause an oops looking something like:
BUG: KASAN: slab-out-of-bounds in watch_queue_set_filter+0x659/0x740
Write of size 4 at addr ffff88800d2c66bc by task watch_queue_oob/611
...
Call Trace:
<TASK>
dump_stack_lvl+0x45/0x59
print_address_description.constprop.0+0x1f/0x150
...
kasan_report.cold+0x7f/0x11b
...
watch_queue_set_filter+0x659/0x740
...
__x64_sys_ioctl+0x127/0x190
do_syscall_64+0x43/0x90
entry_SYSCALL_64_after_hwframe+0x44/0xae
Allocated by task 611:
kasan_save_stack+0x1e/0x40
__kasan_kmalloc+0x81/0xa0
watch_queue_set_filter+0x23a/0x740
__x64_sys_ioctl+0x127/0x190
do_syscall_64+0x43/0x90
entry_SYSCALL_64_after_hwframe+0x44/0xae
The buggy address belongs to the object at ffff88800d2c66a0
which belongs to the cache kmalloc-32 of size 32
The buggy address is located 28 bytes inside of
32-byte region [ffff88800d2c66a0, ffff88800d2c66c0)
Fixes: c73be61ced
("pipe: Add general notification queue support")
Reported-by: Jann Horn <jannh@google.com >
Signed-off-by: David Howells <dhowells@redhat.com >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2022-03-16 14:16:03 +01:00
..
2021-04-14 08:42:06 +02:00
2021-04-07 15:00:07 +02:00
2020-10-29 17:22:59 -05:00
2021-05-14 09:50:05 +02:00
2020-10-15 18:42:13 -07:00
2021-05-14 09:50:31 +02:00
2021-07-14 16:56:37 +02:00
2020-10-15 07:57:55 +02:00
2020-10-29 17:22:59 -05:00
2021-08-08 09:05:22 +02:00
2021-06-16 12:01:44 +02:00
2022-03-16 14:15:59 +01:00
2021-05-11 14:47:14 +02:00
2020-10-25 14:51:49 -07:00
2021-03-30 14:32:06 +02:00
2021-04-21 13:00:56 +02:00
2021-04-21 13:00:55 +02:00
2021-11-26 10:39:08 +01:00
2021-09-15 09:50:26 +02:00
2020-10-17 11:18:18 -07:00
2021-03-25 09:04:14 +01:00
2021-12-01 09:19:10 +01:00
2021-08-26 08:35:42 -04:00
2021-03-04 11:38:14 +01:00
2021-09-08 08:49:01 +02:00
2021-09-18 13:40:13 +02:00
2022-02-01 17:25:43 +01:00
2021-03-09 11:11:13 +01:00
2021-12-08 09:03:20 +01:00
2022-03-11 12:11:52 +01:00
2021-07-14 16:56:53 +02:00
2020-10-16 11:11:20 -07:00
2021-06-03 09:00:45 +02:00
2021-01-12 20:18:17 +01:00
2022-01-27 10:54:08 +01:00
2021-11-21 13:46:35 +01:00
2020-11-19 08:55:44 -05:00
2021-08-04 12:46:41 +02:00
2022-01-27 10:53:54 +01:00
2021-09-03 10:09:31 +02:00
2022-03-11 12:11:49 +01:00
2021-03-30 14:32:05 +02:00
2020-12-11 14:02:14 -08:00
2020-10-16 11:11:19 -07:00
2020-10-25 14:51:49 -07:00
2021-09-26 14:08:59 +02:00
2021-11-18 14:04:32 +01:00
2022-01-27 10:54:05 +01:00
2020-10-13 18:38:34 -07:00
2020-10-25 14:51:49 -07:00
2021-07-20 16:05:46 +02:00
2021-07-20 16:05:46 +02:00
2021-07-20 16:05:46 +02:00
2021-09-30 10:11:07 +02:00
2021-05-26 12:06:56 +02:00
2021-11-18 14:03:49 +01:00
2021-06-03 09:00:45 +02:00
2021-05-28 13:17:43 +02:00
2020-10-16 11:11:21 -07:00
2020-10-25 14:51:49 -07:00
2020-11-10 18:31:17 +01:00
2021-05-19 10:13:18 +02:00
2020-10-16 17:21:51 +02:00
2021-09-08 08:49:00 +02:00
2021-03-09 11:11:13 +01:00
2020-10-19 14:28:30 -07:00
2021-06-30 08:47:18 -04:00
2020-10-30 08:37:39 +01:00
2020-10-16 07:28:20 +02:00
2021-03-30 14:32:06 +02:00
2021-08-18 08:59:17 +02:00
2021-01-19 18:27:22 +01:00
2020-10-20 10:41:07 +02:00
2021-05-07 11:04:32 +02:00
2020-10-25 14:51:49 -07:00
2021-03-11 14:17:27 +01:00
2021-03-25 09:04:18 +01:00
2021-05-19 10:13:13 +02:00
2021-10-27 09:56:51 +02:00
2021-09-15 09:50:37 +02:00
2021-03-17 17:06:36 +01:00
2021-11-18 14:04:25 +01:00
2021-09-18 13:40:21 +02:00
2021-03-04 11:38:41 +01:00
2020-10-25 14:51:49 -07:00
2021-04-07 15:00:11 +02:00
2020-10-16 11:11:22 -07:00
2021-11-18 14:03:42 +01:00
2020-10-25 14:51:49 -07:00
2020-10-15 10:46:16 -07:00
2022-01-20 09:17:49 +01:00
2021-11-26 10:39:22 +01:00
2021-09-08 08:48:59 +02:00
2020-12-30 11:54:18 +01:00
2022-02-01 17:25:48 +01:00
2020-11-12 13:59:04 -07:00
2020-10-15 14:43:29 -07:00
2022-01-27 10:54:16 +01:00
2020-10-22 22:44:35 +02:00
2021-06-18 10:00:04 +02:00
2021-09-15 09:50:25 +02:00
2021-07-25 14:36:18 +02:00
2021-09-18 13:40:36 +02:00
2021-09-18 13:40:36 +02:00
2021-05-19 10:12:54 +02:00
2021-03-04 11:38:46 +01:00
2020-10-16 11:11:20 -07:00
2021-03-30 14:31:57 +02:00
2021-08-18 08:59:13 +02:00
2020-10-25 14:51:49 -07:00
2020-10-25 14:51:49 -07:00
2020-10-16 17:35:36 +02:00
2021-09-18 13:40:14 +02:00
2020-10-25 14:51:49 -07:00
2020-11-04 10:22:56 -07:00
2020-10-20 07:10:14 -06:00
2020-11-04 08:52:46 -08:00
2021-05-14 09:50:32 +02:00
2020-10-16 11:11:18 -07:00
2021-12-01 09:19:10 +01:00
2021-03-04 11:38:46 +01:00
2021-08-18 08:59:15 +02:00
2020-11-30 12:21:31 +01:00
2020-11-19 22:38:29 -05:00
2020-10-29 13:17:58 -05:00
2020-10-16 11:11:19 -07:00
2020-10-13 18:38:32 -07:00
2021-01-09 13:46:23 +01:00
2021-11-18 14:03:56 +01:00
2020-10-25 14:51:49 -07:00
2021-03-04 11:37:50 +01:00
2021-03-04 11:37:59 +01:00
2021-03-04 11:38:46 +01:00
2021-03-04 11:38:20 +01:00
2021-12-08 09:03:20 +01:00
2021-02-07 15:37:17 +01:00
2021-06-16 12:01:46 +02:00
2021-11-18 14:03:37 +01:00
2021-02-03 23:28:40 +01:00
2021-09-30 10:11:04 +02:00
2020-10-16 11:11:20 -07:00
2021-09-15 09:50:41 +02:00
2021-09-15 09:50:41 +02:00
2021-09-15 09:50:41 +02:00
2021-11-18 14:03:36 +01:00
2021-11-18 14:03:36 +01:00
2021-04-21 13:01:00 +02:00
2020-10-15 07:49:46 +02:00
2021-10-09 14:40:56 +02:00
2022-01-05 12:40:29 +01:00
2022-02-23 12:00:56 +01:00
2021-09-22 12:27:59 +02:00
2021-03-17 17:06:25 +01:00
2021-03-04 11:38:21 +01:00
2021-06-03 09:00:45 +02:00
2021-06-23 14:42:49 +02:00
2021-06-30 08:47:27 -04:00
2020-10-13 18:38:31 -07:00
2021-06-30 08:47:26 -04:00
2021-03-30 14:32:06 +02:00
2022-01-27 10:53:44 +01:00
2020-10-28 14:08:54 +00:00
2020-10-25 14:51:49 -07:00
2021-08-18 08:59:17 +02:00
2021-03-30 14:32:07 +02:00
2021-07-19 09:44:51 +02:00
2022-02-23 12:01:02 +01:00
2020-10-30 12:57:39 +01:00
2020-10-30 12:57:39 +01:00
2020-10-21 18:24:08 -07:00
2022-02-16 12:54:18 +01:00
2020-11-30 10:52:22 -05:00
2020-10-21 10:31:20 -04:00
2021-05-19 10:13:02 +02:00
2020-10-16 11:11:18 -07:00
2020-10-16 11:11:19 -07:00
2020-11-22 10:48:22 -08:00
2021-02-07 15:37:16 +01:00
2020-10-25 14:51:49 -07:00
2021-07-19 09:44:39 +02:00
2021-03-09 11:11:13 +01:00
2021-09-03 10:09:21 +02:00
2020-10-13 18:38:35 -07:00
2020-10-17 11:18:18 -07:00
2020-10-16 11:11:15 -07:00
2020-10-16 11:11:16 -07:00
2021-06-30 08:47:29 -04:00
2021-09-22 12:28:00 +02:00
2021-05-19 10:13:01 +02:00
2021-05-19 10:13:01 +02:00
2021-11-21 13:46:36 +01:00
2020-10-25 14:51:49 -07:00
2022-02-01 17:25:45 +01:00
2020-11-09 18:12:34 +01:00
2022-02-08 18:30:35 +01:00
2021-03-30 14:32:05 +02:00
2020-10-18 09:27:10 -07:00
2021-09-03 10:09:28 +02:00
2021-05-14 09:50:14 +02:00
2020-10-16 17:53:22 +02:00
2022-01-27 10:54:17 +01:00
2021-05-19 10:12:51 +02:00
2021-11-18 14:04:29 +01:00
2021-07-14 16:55:58 +02:00
2020-10-25 14:51:49 -07:00
2020-12-30 11:53:56 +01:00
2020-10-14 16:09:32 -07:00
2022-02-05 12:37:55 +01:00
2022-02-05 12:37:55 +01:00
2021-06-23 14:42:45 +02:00
2021-04-07 15:00:13 +02:00
2020-10-13 18:38:28 -07:00
2021-09-18 13:40:19 +02:00
2020-10-28 11:41:15 -06:00
2021-06-30 08:47:27 -04:00
2021-11-18 14:04:22 +01:00
2021-01-09 13:46:24 +01:00
2022-02-23 12:01:00 +01:00
2021-11-18 14:03:36 +01:00
2020-12-30 11:53:42 +01:00
2021-11-18 14:04:27 +01:00
2021-03-17 17:06:34 +01:00
2020-10-25 14:51:49 -07:00
2020-10-29 13:17:58 -05:00
2021-12-08 09:03:23 +01:00
2021-09-22 12:27:58 +02:00
2021-08-04 12:46:44 +02:00
2020-10-25 11:39:02 -07:00
2021-05-14 09:50:46 +02:00
2021-06-23 14:42:44 +02:00
2020-10-25 14:51:49 -07:00
2020-10-22 14:15:51 -06:00
2021-09-03 10:09:30 +02:00
2021-09-03 10:09:30 +02:00
2021-03-30 14:31:53 +02:00
2021-03-30 14:31:53 +02:00
2021-09-03 10:09:25 +02:00
2021-03-17 17:06:34 +01:00
2022-02-16 12:54:22 +01:00
2020-10-13 18:38:30 -07:00
2021-07-25 14:36:17 +02:00
2021-07-25 14:36:18 +02:00
2021-05-07 11:04:32 +02:00
2021-01-17 14:16:59 +01:00
2020-10-17 15:05:30 -06:00
2022-03-02 11:42:47 +01:00
2021-09-26 14:08:59 +02:00
2021-03-25 09:04:16 +01:00
2021-09-16 12:51:23 +02:00
2022-03-08 19:09:34 +01:00
2021-11-18 14:04:11 +01:00
2021-11-26 10:39:14 +01:00
2020-12-30 11:53:42 +01:00
2020-10-17 15:04:36 -06:00
2020-10-15 15:51:28 -07:00
2021-07-14 16:55:46 +02:00
2021-05-14 09:50:18 +02:00
2021-03-04 11:37:36 +01:00
2021-05-14 09:50:18 +02:00
2021-03-30 14:31:51 +02:00
2020-10-24 10:57:57 -07:00
2021-05-14 09:50:31 +02:00
2021-02-17 11:02:28 +01:00
2021-03-25 09:04:14 +01:00
2021-03-17 17:06:19 +01:00
2021-09-08 08:49:00 +02:00
2021-03-30 14:32:03 +02:00
2020-10-23 11:55:27 -04:00
2022-03-16 14:16:02 +01:00
2021-12-29 12:25:56 +01:00
2022-03-16 14:16:01 +01:00
2021-02-10 09:29:21 +01:00
2020-10-16 11:11:19 -07:00
2021-12-14 11:32:39 +01:00
2022-03-16 14:16:03 +01:00
2021-04-07 15:00:06 +02:00
2020-10-20 14:39:37 -07:00
2021-03-07 12:34:15 +01:00