syzbot


KASAN: use-after-free Read in __queue_work

Status: public: reported C repro on 2019/04/13 00:00
Reported-by: syzbot+9e40a8184a8488e6e9a2@syzkaller.appspotmail.com
First crash: 2110d, last: 2072d
Similar bugs (5)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
linux-4.19 KASAN: use-after-free Read in __queue_work syz done 5 983d 1355d 1/1 fixed on 2021/09/10 09:12
linux-4.14 KASAN: use-after-free Read in __queue_work syz error 4 591d 1355d 0/1 upstream: reported syz repro on 2020/08/03 15:06
upstream KASAN: use-after-free Read in __queue_work net syz 2 2402d 2366d 0/26 closed as invalid on 2017/10/27 09:34
upstream KASAN: use-after-free Read in __queue_work (3) bluetooth syz done done 83 521d 1350d 0/26 upstream: reported syz repro on 2020/08/08 21:27
upstream KASAN: use-after-free Read in __queue_work (2) C done done 577 1758d 2112d 15/26 fixed on 2020/01/08 01:07

Sample crash report:
==================================================================
BUG: KASAN: use-after-free in constant_test_bit arch/x86/include/asm/bitops.h:311 [inline]
BUG: KASAN: use-after-free in work_is_static_object+0x39/0x40 kernel/workqueue.c:442
Read of size 8 at addr ffff8801c16412a0 by task kworker/1:2/3812

CPU: 1 PID: 3812 Comm: kworker/1:2 Not tainted 4.9.113-g47bbcd6 #10
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Workqueue: events p9_poll_workfn
 ffff8801b4a8f9c8 ffffffff81eb32a9 ffffea0007059000 ffff8801c16412a0
 0000000000000000 ffff8801c16412a0 0000000000000000 ffff8801b4a8fa00
 ffffffff81567bd9 ffff8801c16412a0 0000000000000008 0000000000000000
Call Trace:
 [<ffffffff81eb32a9>] __dump_stack lib/dump_stack.c:15 [inline]
 [<ffffffff81eb32a9>] dump_stack+0xc1/0x128 lib/dump_stack.c:51
 [<ffffffff81567bd9>] print_address_description+0x6c/0x234 mm/kasan/report.c:256
 [<ffffffff81567fe3>] kasan_report_error mm/kasan/report.c:355 [inline]
 [<ffffffff81567fe3>] kasan_report.cold.6+0x242/0x2fe mm/kasan/report.c:412
 [<ffffffff8153bc34>] __asan_report_load8_noabort+0x14/0x20 mm/kasan/report.c:433
 [<ffffffff8117f069>] constant_test_bit arch/x86/include/asm/bitops.h:311 [inline]
 [<ffffffff8117f069>] work_is_static_object+0x39/0x40 kernel/workqueue.c:442
 [<ffffffff81f1d95d>] debug_object_activate+0x22d/0x4e0 lib/debugobjects.c:445
 [<ffffffff81188108>] debug_work_activate kernel/workqueue.c:491 [inline]
 [<ffffffff81188108>] __queue_work+0x48/0xf10 kernel/workqueue.c:1380
 [<ffffffff81189c17>] queue_work_on+0x97/0xa0 kernel/workqueue.c:1486
 [<ffffffff839c354a>] queue_work include/linux/workqueue.h:477 [inline]
 [<ffffffff839c354a>] schedule_work include/linux/workqueue.h:535 [inline]
 [<ffffffff839c354a>] p9_poll_mux net/9p/trans_fd.c:638 [inline]
 [<ffffffff839c354a>] p9_poll_workfn+0x28a/0x330 net/9p/trans_fd.c:1097
 [<ffffffff8118d181>] process_one_work+0x7e1/0x1500 kernel/workqueue.c:2092
 [<ffffffff8118df76>] worker_thread+0xd6/0x10a0 kernel/workqueue.c:2226
 [<ffffffff8119d0ad>] kthread+0x26d/0x300 kernel/kthread.c:211
 [<ffffffff839fa15c>] ret_from_fork+0x5c/0x70 arch/x86/entry/entry_64.S:373

Allocated by task 3806:
 save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:57
 save_stack+0x43/0xd0 mm/kasan/kasan.c:505
 set_track mm/kasan/kasan.c:517 [inline]
 kasan_kmalloc+0xc7/0xe0 mm/kasan/kasan.c:609
 kmem_cache_alloc_trace+0xfd/0x2b0 mm/slub.c:2742
 kmalloc include/linux/slab.h:490 [inline]
 kzalloc include/linux/slab.h:636 [inline]
 p9_fd_open net/9p/trans_fd.c:792 [inline]
 p9_fd_create+0xf3/0x330 net/9p/trans_fd.c:1029
 p9_client_create+0x6ff/0x10a0 net/9p/client.c:1036
 v9fs_session_init+0x333/0x13a0 fs/9p/v9fs.c:343
 v9fs_mount+0x7d/0x810 fs/9p/vfs_super.c:130
 mount_fs+0x28c/0x370 fs/super.c:1206
 vfs_kern_mount.part.29+0xd1/0x3d0 fs/namespace.c:991
 vfs_kern_mount fs/namespace.c:973 [inline]
 do_new_mount fs/namespace.c:2513 [inline]
 do_mount+0x3c9/0x2740 fs/namespace.c:2835
 SYSC_mount fs/namespace.c:3051 [inline]
 SyS_mount+0xfe/0x110 fs/namespace.c:3028
 do_syscall_64+0x1a6/0x490 arch/x86/entry/common.c:282
 entry_SYSCALL_64_after_swapgs+0x5d/0xdb

Freed by task 3806:
 save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:57
 save_stack+0x43/0xd0 mm/kasan/kasan.c:505
 set_track mm/kasan/kasan.c:517 [inline]
 kasan_slab_free+0x72/0xc0 mm/kasan/kasan.c:582
 slab_free_hook mm/slub.c:1355 [inline]
 slab_free_freelist_hook mm/slub.c:1377 [inline]
 slab_free mm/slub.c:2958 [inline]
 kfree+0xfb/0x310 mm/slub.c:3878
 p9_fd_close+0x298/0x330 net/9p/trans_fd.c:890
 p9_client_destroy+0x73/0x570 net/9p/client.c:1070
 v9fs_session_close+0x46/0x110 fs/9p/v9fs.c:434
 v9fs_kill_super+0x4e/0xa0 fs/9p/vfs_super.c:226
 deactivate_locked_super+0x75/0xd0 fs/super.c:310
 deactivate_super+0x91/0xd0 fs/super.c:341
 cleanup_mnt+0xb2/0x160 fs/namespace.c:1134
 __cleanup_mnt+0x16/0x20 fs/namespace.c:1141
 task_work_run+0x10c/0x180 kernel/task_work.c:116
 tracehook_notify_resume include/linux/tracehook.h:191 [inline]
 exit_to_usermode_loop+0xfc/0x120 arch/x86/entry/common.c:161
 prepare_exit_to_usermode arch/x86/entry/common.c:191 [inline]
 syscall_return_slowpath arch/x86/entry/common.c:260 [inline]
 do_syscall_64+0x364/0x490 arch/x86/entry/common.c:287
 entry_SYSCALL_64_after_swapgs+0x5d/0xdb

The buggy address belongs to the object at ffff8801c1641180
 which belongs to the cache kmalloc-512 of size 512
The buggy address is located 288 bytes inside of
 512-byte region [ffff8801c1641180, ffff8801c1641380)
The buggy address belongs to the page:
page:ffffea0007059000 count:1 mapcount:0 mapping:          (null) index:0x0 compound_mapcount: 0
flags: 0x8000000000004080(slab|head)
page dumped because: kasan: bad access detected

Memory state around the buggy address:
 ffff8801c1641180: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff8801c1641200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>ffff8801c1641280: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                               ^
 ffff8801c1641300: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff8801c1641380: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
==================================================================

Crashes (19):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2018/07/24 08:05 https://android.googlesource.com/kernel/common android-4.9 47bbcd6bf8f9 912c93d7 .config console log report syz C ci-android-49-kasan-gce-root
2018/07/12 03:13 https://android.googlesource.com/kernel/common android-4.9 9e7903954483 2e0e3130 .config console log report syz C ci-android-49-kasan-gce-root
2018/07/11 23:00 https://android.googlesource.com/kernel/common android-4.9 9e7903954483 2e0e3130 .config console log report syz C ci-android-49-kasan-gce-root
2018/07/11 13:23 https://android.googlesource.com/kernel/common android-4.9 03c70feafdb2 2e0e3130 .config console log report syz C ci-android-49-kasan-gce
2018/07/10 13:28 https://android.googlesource.com/kernel/common android-4.9 03c70feafdb2 9fa03fa5 .config console log report syz C ci-android-49-kasan-gce-386
2018/08/18 00:59 https://android.googlesource.com/kernel/common android-4.9 681e57bb080a 738da825 .config console log report ci-android-49-kasan-gce-root
2018/08/16 09:01 https://android.googlesource.com/kernel/common android-4.9 f85543ba3c54 9ccc1d45 .config console log report ci-android-49-kasan-gce-root
2018/08/12 13:14 https://android.googlesource.com/kernel/common android-4.9 9dc978d43ec7 7a88b141 .config console log report ci-android-49-kasan-gce-root
2018/08/10 16:17 https://android.googlesource.com/kernel/common android-4.9 92e87041ed2d 1fb62d58 .config console log report ci-android-49-kasan-gce-root
2018/08/10 08:29 https://android.googlesource.com/kernel/common android-4.9 92e87041ed2d 1fb62d58 .config console log report ci-android-49-kasan-gce-root
2018/08/09 16:52 https://android.googlesource.com/kernel/common android-4.9 92e87041ed2d 1fb62d58 .config console log report ci-android-49-kasan-gce-root
2018/08/05 13:07 https://android.googlesource.com/kernel/common android-4.9 8b21e85d919c 1beb8136 .config console log report ci-android-49-kasan-gce-root
2018/08/03 15:35 https://android.googlesource.com/kernel/common android-4.9 8b21e85d919c cc4f6d0a .config console log report ci-android-49-kasan-gce-root
2018/07/23 00:56 https://android.googlesource.com/kernel/common android-4.9 47bbcd6bf8f9 8cc079c3 .config console log report ci-android-49-kasan-gce-root
2018/07/17 16:46 https://android.googlesource.com/kernel/common android-4.9 f540ce029f50 6d5bd5b5 .config console log report ci-android-49-kasan-gce-root
2018/07/16 09:36 https://android.googlesource.com/kernel/common android-4.9 9e7903954483 92a49505 .config console log report ci-android-49-kasan-gce-root
2018/07/12 15:26 https://android.googlesource.com/kernel/common android-4.9 9e7903954483 06c33b3a .config console log report ci-android-49-kasan-gce-root
2018/07/11 00:45 https://android.googlesource.com/kernel/common android-4.9 03c70feafdb2 2e0e3130 .config console log report ci-android-49-kasan-gce-root
2018/07/11 06:59 https://android.googlesource.com/kernel/common android-4.9 03c70feafdb2 2e0e3130 .config console log report ci-android-49-kasan-gce-386
* Struck through repros no longer work on HEAD.