Hello,
syzbot found the following crash on:
HEAD commit: 132f097f ANDROID: sdcardfs: Set s_root to NULL after putting
git tree: android-4.9
console output:
https://syzkaller.appspot.com/x/log.txt?x=17b8a847800000
kernel config:
https://syzkaller.appspot.com/x/.config?x=a54f56879744de40
dashboard link:
https://syzkaller.appspot.com/bug?extid=42498191c906088d4e71
compiler: gcc (GCC) 8.0.1 20180413 (experimental)
Unfortunately, I don't have any reproducer for this crash yet.
IMPORTANT: if you fix the bug, please add the following tag to the commit:
Reported-by:
syzbot+424981...@syzkaller.appspotmail.com
loop0: p1
==================================================================
BUG: KASAN: use-after-free in get_disk+0xc2/0xd0 block/genhd.c:1339
Read of size 8 at addr ffff8801d6e39ea8 by task blkid/14175
CPU: 0 PID: 14175 Comm: blkid Not tainted 4.9.96-g132f097 #9
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
Google 01/01/2011
ffff88019a0b7698 ffffffff81eb0b69 ffffea00075b8e00 ffff8801d6e39ea8
0000000000000000 ffff8801d6e39ea8 0000000000000000 ffff88019a0b76d0
ffffffff8156540b ffff8801d6e39ea8 0000000000000008 0000000000000000
Call Trace:
[<ffffffff81eb0b69>] __dump_stack lib/dump_stack.c:15 [inline]
[<ffffffff81eb0b69>] dump_stack+0xc1/0x128 lib/dump_stack.c:51
[<ffffffff8156540b>] print_address_description+0x6c/0x234
mm/kasan/report.c:256
[<ffffffff81565815>] kasan_report_error mm/kasan/report.c:355 [inline]
[<ffffffff81565815>] kasan_report.cold.6+0x242/0x2fe mm/kasan/report.c:412
[<ffffffff81539494>] __asan_report_load8_noabort+0x14/0x20
mm/kasan/report.c:433
[<ffffffff81e57832>] get_disk+0xc2/0xd0 block/genhd.c:1339
[<ffffffff81e57b4a>] get_gendisk+0x16a/0x2d0 block/genhd.c:724
[<ffffffff8162ec81>] __blkdev_get+0x351/0xd60 fs/block_dev.c:1262
[<ffffffff81631f2a>] blkdev_get+0x2da/0x920 fs/block_dev.c:1416
[<ffffffff81632785>] blkdev_open+0x1a5/0x250 fs/block_dev.c:1571
[<ffffffff81567583>] do_dentry_open+0x703/0xc80 fs/open.c:766
[<ffffffff8156ad6c>] vfs_open+0x11c/0x210 fs/open.c:879
[<ffffffff815a1ea8>] do_last fs/namei.c:3410 [inline]
[<ffffffff815a1ea8>] path_openat+0x758/0x3590 fs/namei.c:3534
[<ffffffff815a8fa7>] do_filp_open+0x197/0x270 fs/namei.c:3568
[<ffffffff8156b77d>] do_sys_open+0x30d/0x5c0 fs/open.c:1072
[<ffffffff8156ba5d>] SYSC_open fs/open.c:1090 [inline]
[<ffffffff8156ba5d>] SyS_open+0x2d/0x40 fs/open.c:1085
[<ffffffff81006316>] do_syscall_64+0x1a6/0x490 arch/x86/entry/common.c:282
[<ffffffff839f3313>] entry_SYSCALL_64_after_swapgs+0x5d/0xdb
Allocated by task 10220:
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
kmem_cache_alloc_node_trace include/linux/slab.h:381 [inline]
kmalloc_node include/linux/slab.h:528 [inline]
kzalloc_node include/linux/slab.h:647 [inline]
alloc_disk_node+0x54/0x3a0 block/genhd.c:1294
alloc_disk+0x18/0x20 block/genhd.c:1286
loop_add+0x33b/0x770 drivers/block/loop.c:1782
loop_probe+0x14f/0x180 drivers/block/loop.c:1889
kobj_lookup+0x223/0x410 drivers/base/map.c:124
get_gendisk+0x39/0x2d0 block/genhd.c:716
__blkdev_get+0x351/0xd60 fs/block_dev.c:1262
blkdev_get+0x2da/0x920 fs/block_dev.c:1416
blkdev_open+0x1a5/0x250 fs/block_dev.c:1571
do_dentry_open+0x703/0xc80 fs/open.c:766
vfs_open+0x11c/0x210 fs/open.c:879
do_last fs/namei.c:3410 [inline]
path_openat+0x758/0x3590 fs/namei.c:3534
do_filp_open+0x197/0x270 fs/namei.c:3568
do_sys_open+0x30d/0x5c0 fs/open.c:1072
SYSC_open fs/open.c:1090 [inline]
SyS_open+0x2d/0x40 fs/open.c:1085
do_syscall_64+0x1a6/0x490 arch/x86/entry/common.c:282
entry_SYSCALL_64_after_swapgs+0x5d/0xdb
Freed by task 10220:
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
disk_release+0x259/0x330 block/genhd.c:1147
device_release+0x7e/0x220 drivers/base/core.c:247
kobject_cleanup lib/kobject.c:645 [inline]
kobject_release+0x103/0x1b0 lib/kobject.c:674
kref_sub include/linux/kref.h:73 [inline]
kref_put include/linux/kref.h:98 [inline]
kobject_put+0x6d/0xd0 lib/kobject.c:691
put_disk+0x23/0x30 block/genhd.c:1358
__blkdev_get+0x57d/0xd60 fs/block_dev.c:1374
blkdev_get+0x2da/0x920 fs/block_dev.c:1416
blkdev_open+0x1a5/0x250 fs/block_dev.c:1571
do_dentry_open+0x703/0xc80 fs/open.c:766
vfs_open+0x11c/0x210 fs/open.c:879
do_last fs/namei.c:3410 [inline]
path_openat+0x758/0x3590 fs/namei.c:3534
do_filp_open+0x197/0x270 fs/namei.c:3568
do_sys_open+0x30d/0x5c0 fs/open.c:1072
SYSC_open fs/open.c:1090 [inline]
SyS_open+0x2d/0x40 fs/open.c:1085
do_syscall_64+0x1a6/0x490 arch/x86/entry/common.c:282
entry_SYSCALL_64_after_swapgs+0x5d/0xdb
The buggy address belongs to the object at ffff8801d6e39980
which belongs to the cache kmalloc-2048 of size 2048
The buggy address is located 1320 bytes inside of
2048-byte region [ffff8801d6e39980, ffff8801d6e3a180)
The buggy address belongs to the page:
page:ffffea00075b8e00 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:
ffff8801d6e39d80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
ffff8801d6e39e00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
> ffff8801d6e39e80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
^
ffff8801d6e39f00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
ffff8801d6e39f80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb