Edward Adam Davis
c58a812c8e
ring-buffer: Fix overflow in __rb_map_vma
An overflow occurred when performing the following calculation:
nr_pages = ((nr_subbufs + 1) << subbuf_order) - pgoff;
Add a check before the calculation to avoid this problem.
syzbot reported this as a slab-out-of-bounds in __rb_map_vma:
BUG: KASAN: slab-out-of-bounds in __rb_map_vma+0x9ab/0xae0 kernel/trace/ring_buffer.c:7058
Read of size 8 at addr ffff8880767dd2b8 by task syz-executor187/5836
CPU: 0 UID: 0 PID: 5836 Comm: syz-executor187 Not tainted 6.13.0-rc2-syzkaller-00159-gf932fb9b4074 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 11/25/2024
Call Trace:
<TASK>
__dump_stack lib/dump_stack.c:94 [inline]
dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120
print_address_description mm/kasan/report.c:378 [inline]
print_report+0xc3/0x620 mm/kasan/report.c:489
kasan_report+0xd9/0x110 mm/kasan/report.c:602
__rb_map_vma+0x9ab/0xae0 kernel/trace/ring_buffer.c:7058
ring_buffer_map+0x56e/0x9b0 kernel/trace/ring_buffer.c:7138
tracing_buffers_mmap+0xa6/0x120 kernel/trace/trace.c:8482
call_mmap include/linux/fs.h:2183 [inline]
mmap_file mm/internal.h:124 [inline]
__mmap_new_file_vma mm/vma.c:2291 [inline]
__mmap_new_vma mm/vma.c:2355 [inline]
__mmap_region+0x1786/0x2670 mm/vma.c:2456
mmap_region+0x127/0x320 mm/mmap.c:1348
do_mmap+0xc00/0xfc0 mm/mmap.c:496
vm_mmap_pgoff+0x1ba/0x360 mm/util.c:580
ksys_mmap_pgoff+0x32c/0x5c0 mm/mmap.c:542
__do_sys_mmap arch/x86/kernel/sys_x86_64.c:89 [inline]
__se_sys_mmap arch/x86/kernel/sys_x86_64.c:82 [inline]
__x64_sys_mmap+0x125/0x190 arch/x86/kernel/sys_x86_64.c:82
do_syscall_x64 arch/x86/entry/common.c:52 [inline]
do_syscall_64+0xcd/0x250 arch/x86/entry/common.c:83
entry_SYSCALL_64_after_hwframe+0x77/0x7f
The reproducer for this bug is:
------------------------8<-------------------------
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <asm/types.h>
#include <sys/mman.h>
int main(int argc, char **argv)
{
int page_size = getpagesize();
int fd;
void *meta;
system("echo 1 > /sys/kernel/tracing/buffer_size_kb");
fd = open("/sys/kernel/tracing/per_cpu/cpu0/trace_pipe_raw", O_RDONLY);
meta = mmap(NULL, page_size, PROT_READ, MAP_SHARED, fd, page_size * 5);
}
------------------------>8-------------------------
Cc: stable@vger.kernel.org
Fixes: 117c39200d ("ring-buffer: Introducing ring-buffer mapping functions")
Link: https://lore.kernel.org/tencent_06924B6674ED771167C23CC336C097223609@qq.com
Reported-by: syzbot+345e4443a21200874b18@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=345e4443a21200874b18
Signed-off-by: Edward Adam Davis <eadavis@qq.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
2024-12-18 14:15:10 -05:00
..
2024-12-14 09:49:27 -08:00
2024-11-20 09:54:49 -08:00
2024-10-28 10:21:09 -07:00
2024-11-18 15:20:22 +00:00
2024-11-28 10:19:16 +01:00
2024-11-05 12:55:37 +01:00
2024-11-25 16:09:48 -08:00
2024-12-09 10:00:25 -08:00
2024-06-15 10:43:06 -07:00
2024-12-03 14:59:34 +01:00
2024-10-14 16:44:56 +02:00
2024-07-02 16:56:18 +02:00
2024-12-02 12:01:29 +01:00
2024-12-02 11:34:44 -08:00
2024-11-23 16:00:50 -08:00
2024-11-20 09:21:11 -08:00
2024-11-19 15:54:19 -08:00
2024-12-15 09:38:03 -08:00
2024-12-05 16:03:24 +01:00
2024-12-18 14:15:10 -05:00
2024-04-24 09:43:53 +02:00
2024-02-09 11:13:59 -10:00
2024-04-04 16:24:16 +02:00
2024-04-04 16:24:16 +02:00
2024-11-18 17:34:05 -08:00
2024-10-11 14:34:16 -04:00
2024-10-11 14:34:16 -04:00
2024-12-04 22:57:46 -05:00
2024-06-24 22:24:55 -07:00
2024-04-29 08:29:29 -07:00
2023-08-08 16:48:47 -04:00
2024-08-15 21:30:43 +05:30
2024-11-29 11:43:29 -08:00
2024-11-05 17:12:27 -08:00
2024-09-01 20:43:30 -07:00
2024-11-11 10:45:04 +01:00
2024-07-24 20:59:29 +02:00
2024-02-23 17:48:22 -08:00
2024-10-07 13:34:41 -04:00
2023-09-21 12:03:50 -06:00
2024-11-27 12:51:30 +01:00
2024-10-14 09:14:35 +02:00
2024-05-30 01:13:20 +09:00
2023-09-29 11:28:39 -07:00
2024-11-11 17:17:03 -08:00
2023-08-21 13:37:28 -07:00
2024-09-10 11:57:27 +02:00
2024-07-20 16:33:21 +09:00
2024-08-15 09:33:35 -07:00
2024-08-15 09:33:35 -07:00
2024-10-07 13:34:41 -04:00
2024-11-14 22:43:48 -08:00
2024-11-07 15:25:05 +01:00
2024-09-17 12:40:34 +02:00
2024-07-24 20:59:29 +02:00
2024-09-01 17:59:01 -07:00
2024-09-01 20:43:23 -07:00
2024-04-23 14:59:01 +10:00
2024-10-31 11:00:58 +09:00
2024-07-29 10:45:54 -07:00
2024-11-05 17:12:28 -08:00
2024-07-24 20:59:29 +02:00
2024-09-03 21:15:26 -07:00
2024-11-05 17:12:31 -08:00
2024-11-03 01:28:06 -05:00
2024-11-10 11:50:54 +08:00
2024-09-19 10:18:15 +02:00
2023-12-01 09:51:44 -08:00
2024-07-24 20:59:29 +02:00
2024-07-24 20:59:29 +02:00
2024-11-03 01:28:06 -05:00
2024-08-04 13:36:28 -07:00
2024-02-22 15:38:52 -08:00
2024-11-11 17:17:05 -08:00
2024-04-25 21:07:03 -07:00
2024-09-27 08:18:43 -07:00
2024-10-09 12:47:19 -07:00
2024-12-02 11:34:44 -08:00
2024-11-14 16:09:51 -08:00
2024-07-24 20:59:29 +02:00
2024-11-29 13:19:09 +01:00
2024-10-11 09:31:21 -07:00
2023-10-04 10:41:57 -07:00
2024-12-02 12:01:27 +01:00
2024-07-24 20:59:29 +02:00
2023-12-29 12:22:29 -08:00
2024-09-06 16:29:22 +02:00
2024-08-15 21:30:42 +05:30
2024-07-18 12:19:20 -07:00
2024-11-18 18:10:37 -08:00
2024-06-03 15:20:37 +02:00
2024-10-23 15:28:40 +02:00
2024-10-11 10:49:32 +02:00
2024-11-03 01:28:06 -05:00
2024-05-30 15:31:38 -07:00
2024-11-01 14:37:31 -04:00
2024-07-12 16:39:53 -07:00
2024-11-22 20:36:11 -08:00
2024-10-07 13:34:41 -04:00
2023-09-13 14:59:24 +02:00
2024-09-09 16:47:42 -07:00
2024-09-12 12:16:09 +02:00
2024-07-24 20:59:29 +02:00
2024-05-22 08:31:15 -04:00
2024-09-03 21:15:43 -07:00
2024-11-03 01:28:06 -05:00
2024-07-17 21:11:34 -07:00
2024-11-25 16:09:48 -08:00
2023-08-07 15:57:22 -10:00
2024-11-15 06:43:39 -10:00