KASAN: use-after-free Read in io_cancel_async_work

7 views
Skip to first unread message

syzbot

unread,
Aug 20, 2020, 10:57:22 PM8/20/20
to syzkaller-a...@googlegroups.com
Hello,

syzbot found the following issue on:

HEAD commit: 013a1a22 ANDROID: sched: add restrict vendor hook to modif..
git tree: android-5.4
console output: https://syzkaller.appspot.com/x/log.txt?x=10a40046900000
kernel config: https://syzkaller.appspot.com/x/.config?x=71d36a7b70f701e3
dashboard link: https://syzkaller.appspot.com/bug?extid=47d3ee74cfc0547914e7
compiler: Android (6032204 based on r370808) clang version 10.0.1 (https://android.googlesource.com/toolchain/llvm-project 6e765c10313d15c02ab29977a82938f66742c3a9)

Unfortunately, I don't have any reproducer for this issue yet.

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+47d3ee...@syzkaller.appspotmail.com

==================================================================
BUG: KASAN: use-after-free in __list_del_entry_valid+0x2b/0x100 lib/list_debug.c:42
Read of size 8 at addr ffff88816bf39900 by task syz-executor.2/14602

CPU: 0 PID: 14602 Comm: syz-executor.2 Not tainted 5.4.59-syzkaller-00509-g013a1a228267 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0x14a/0x1ce lib/dump_stack.c:118
print_address_description+0x93/0x620 mm/kasan/report.c:374
__kasan_report+0x16d/0x1e0 mm/kasan/report.c:506
kasan_report+0x36/0x60 mm/kasan/common.c:634
__list_del_entry_valid+0x2b/0x100 lib/list_debug.c:42
__list_del_entry include/linux/list.h:131 [inline]
list_del_init include/linux/list.h:190 [inline]
io_cancel_async_work+0x9b/0x280 fs/io_uring.c:3716
io_ring_ctx_wait_and_kill+0xaf/0x1380 fs/io_uring.c:3730
io_uring_release+0x59/0x70 fs/io_uring.c:3753
__fput+0x27d/0x6c0 fs/file_table.c:280
task_work_run+0x176/0x1a0 kernel/task_work.c:113
tracehook_notify_resume include/linux/tracehook.h:188 [inline]
exit_to_usermode_loop arch/x86/entry/common.c:163 [inline]
prepare_exit_to_usermode+0x286/0x2e0 arch/x86/entry/common.c:194
entry_SYSCALL_64_after_hwframe+0x44/0xa9
RIP: 0033:0x45d52a
Code: 89 f5 41 54 49 89 fc 55 53 74 35 49 63 e8 48 63 da 4d 89 f9 49 89 e8 4d 63 d6 48 89 da 4c 89 ee 4c 89 e7 b8 09 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 4e 5b 5d 41 5c 41 5d 41 5e 41 5f c3 0f 1f 00
RSP: 002b:00007f6bbc0a1bc8 EFLAGS: 00000206 ORIG_RAX: 0000000000000009
RAX: 0000000020fff000 RBX: 0000000000000003 RCX: 000000000045d52a
RDX: 0000000000000003 RSI: 0000000000200000 RDI: 0000000020fff000
RBP: 0000000000000003 R08: 0000000000000003 R09: 0000000010000000
R10: 0000000000008011 R11: 0000000000000206 R12: 0000000020fff000
R13: 0000000000200000 R14: 0000000000008011 R15: 0000000010000000

Allocated by task 14602:
save_stack mm/kasan/common.c:69 [inline]
set_track mm/kasan/common.c:77 [inline]
__kasan_kmalloc+0x12c/0x1c0 mm/kasan/common.c:510
slab_post_alloc_hook mm/slab.h:584 [inline]
slab_alloc_node mm/slub.c:2793 [inline]
slab_alloc mm/slub.c:2801 [inline]
kmem_cache_alloc+0x1d5/0x260 mm/slub.c:2806
io_get_req+0x1e8/0x850 fs/io_uring.c:642
io_submit_sqe+0x83/0xe90 fs/io_uring.c:2560
io_ring_submit fs/io_uring.c:2948 [inline]
__do_sys_io_uring_enter fs/io_uring.c:3825 [inline]
__se_sys_io_uring_enter+0x922/0x1ff0 fs/io_uring.c:3786
do_syscall_64+0xcb/0x150 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x44/0xa9

Freed by task 7349:
save_stack mm/kasan/common.c:69 [inline]
set_track mm/kasan/common.c:77 [inline]
kasan_set_free_info mm/kasan/common.c:332 [inline]
__kasan_slab_free+0x181/0x230 mm/kasan/common.c:471
slab_free_hook mm/slub.c:1443 [inline]
slab_free_freelist_hook+0xd0/0x150 mm/slub.c:1476
slab_free mm/slub.c:3041 [inline]
kmem_cache_free+0xac/0x600 mm/slub.c:3057
io_put_req fs/io_uring.c:762 [inline]
io_poll_complete_work+0x737/0x940 fs/io_uring.c:1835
process_one_work+0x777/0xf90 kernel/workqueue.c:2274
worker_thread+0xa8f/0x1430 kernel/workqueue.c:2420
kthread+0x2df/0x300 kernel/kthread.c:255
ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:352

The buggy address belongs to the object at ffff88816bf39800
which belongs to the cache io_kiocb of size 264
The buggy address is located 256 bytes inside of
264-byte region [ffff88816bf39800, ffff88816bf39908)
The buggy address belongs to the page:
page:ffffea0005afce00 refcount:1 mapcount:0 mapping:ffff8881d927d900 index:0xffff88816bf38d80 compound_mapcount: 0
flags: 0x8000000000010200(slab|head)
raw: 8000000000010200 0000000000000000 0000000100000001 ffff8881d927d900
raw: ffff88816bf38d80 0000000080150012 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
ffff88816bf39800: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
ffff88816bf39880: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>ffff88816bf39900: fb fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
^
ffff88816bf39980: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
ffff88816bf39a00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzk...@googlegroups.com.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

syzbot

unread,
Aug 20, 2020, 11:16:23 PM8/20/20
to syzkaller-a...@googlegroups.com
syzbot has found a reproducer for the following issue on:

HEAD commit: 013a1a22 ANDROID: sched: add restrict vendor hook to modif..
git tree: android-5.4
console output: https://syzkaller.appspot.com/x/log.txt?x=141c85ee900000
kernel config: https://syzkaller.appspot.com/x/.config?x=71d36a7b70f701e3
dashboard link: https://syzkaller.appspot.com/bug?extid=47d3ee74cfc0547914e7
compiler: Android (6032204 based on r370808) clang version 10.0.1 (https://android.googlesource.com/toolchain/llvm-project 6e765c10313d15c02ab29977a82938f66742c3a9)
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=122e09b1900000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=112518ee900000

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+47d3ee...@syzkaller.appspotmail.com

==================================================================
BUG: KASAN: use-after-free in __list_del_entry_valid+0x2b/0x100 lib/list_debug.c:42
Read of size 8 at addr ffff8881cdc22b80 by task syz-executor842/330

CPU: 0 PID: 330 Comm: syz-executor842 Not tainted 5.4.59-syzkaller-00509-g013a1a228267 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0x14a/0x1ce lib/dump_stack.c:118
print_address_description+0x93/0x620 mm/kasan/report.c:374
__kasan_report+0x16d/0x1e0 mm/kasan/report.c:506
kasan_report+0x36/0x60 mm/kasan/common.c:634
__list_del_entry_valid+0x2b/0x100 lib/list_debug.c:42
__list_del_entry include/linux/list.h:131 [inline]
list_del_init include/linux/list.h:190 [inline]
io_cancel_async_work+0x9b/0x280 fs/io_uring.c:3716
io_ring_ctx_wait_and_kill+0xaf/0x1380 fs/io_uring.c:3730
io_uring_release+0x59/0x70 fs/io_uring.c:3753
__fput+0x27d/0x6c0 fs/file_table.c:280
task_work_run+0x176/0x1a0 kernel/task_work.c:113
exit_task_work include/linux/task_work.h:22 [inline]
do_exit+0xc42/0x2700 kernel/exit.c:808
do_group_exit+0x155/0x2b0 kernel/exit.c:906
__do_sys_exit_group+0x13/0x20 kernel/exit.c:917
__se_sys_exit_group+0x10/0x10 kernel/exit.c:915
__x64_sys_exit_group+0x37/0x40 kernel/exit.c:915
do_syscall_64+0xcb/0x150 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x44/0xa9
RIP: 0033:0x43f998
Code: Bad RIP value.
RSP: 002b:00007ffd6753e468 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7
RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 000000000043f998
RDX: 0000000000000001 RSI: 000000000000003c RDI: 0000000000000001
RBP: 00000000004bf950 R08: 00000000000000e7 R09: ffffffffffffffd0
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001
R13: 00000000006d11a0 R14: 0000000000000000 R15: 0000000000000000

Allocated by task 330:
save_stack mm/kasan/common.c:69 [inline]
set_track mm/kasan/common.c:77 [inline]
__kasan_kmalloc+0x12c/0x1c0 mm/kasan/common.c:510
slab_post_alloc_hook mm/slab.h:584 [inline]
slab_alloc_node mm/slub.c:2793 [inline]
slab_alloc mm/slub.c:2801 [inline]
kmem_cache_alloc+0x1d5/0x260 mm/slub.c:2806
io_get_req+0x1e8/0x850 fs/io_uring.c:642
io_submit_sqe+0x83/0xe90 fs/io_uring.c:2560
io_ring_submit fs/io_uring.c:2948 [inline]
__do_sys_io_uring_enter fs/io_uring.c:3825 [inline]
__se_sys_io_uring_enter+0x922/0x1ff0 fs/io_uring.c:3786
do_syscall_64+0xcb/0x150 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x44/0xa9

Freed by task 154:
save_stack mm/kasan/common.c:69 [inline]
set_track mm/kasan/common.c:77 [inline]
kasan_set_free_info mm/kasan/common.c:332 [inline]
__kasan_slab_free+0x181/0x230 mm/kasan/common.c:471
slab_free_hook mm/slub.c:1443 [inline]
slab_free_freelist_hook+0xd0/0x150 mm/slub.c:1476
slab_free mm/slub.c:3041 [inline]
kmem_cache_free+0xac/0x600 mm/slub.c:3057
io_put_req fs/io_uring.c:762 [inline]
io_poll_complete_work+0x737/0x940 fs/io_uring.c:1835
process_one_work+0x777/0xf90 kernel/workqueue.c:2274
worker_thread+0xa8f/0x1430 kernel/workqueue.c:2420
kthread+0x2df/0x300 kernel/kthread.c:255
ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:352

The buggy address belongs to the object at ffff8881cdc22a80
which belongs to the cache io_kiocb of size 264
The buggy address is located 256 bytes inside of
264-byte region [ffff8881cdc22a80, ffff8881cdc22b88)
The buggy address belongs to the page:
page:ffffea0007370880 refcount:1 mapcount:0 mapping:ffff8881d920cf00 index:0x0 compound_mapcount: 0
flags: 0x8000000000010200(slab|head)
raw: 8000000000010200 dead000000000100 dead000000000122 ffff8881d920cf00
raw: 0000000000000000 0000000080150015 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
ffff8881cdc22a80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
ffff8881cdc22b00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>ffff8881cdc22b80: fb fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
^
ffff8881cdc22c00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
ffff8881cdc22c80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
==========================================================

syzbot

unread,
Apr 17, 2023, 12:37:29 AM4/17/23
to syzkaller-a...@googlegroups.com
Auto-closing this bug as obsolete.
No recent activity, existing reproducers are no longer triggering the issue.
Reply all
Reply to author
Forward
0 new messages