KASAN: use-after-free Read in btrfs_mount (2)

6 views
Skip to first unread message

syzbot

unread,
Jun 23, 2020, 7:09:11 AM6/23/20
to syzkaller...@googlegroups.com
Hello,

syzbot found the following crash on:

HEAD commit: b850307b Linux 4.14.184
git tree: linux-4.14.y
console output: https://syzkaller.appspot.com/x/log.txt?x=10ede909100000
kernel config: https://syzkaller.appspot.com/x/.config?x=ddc0f08dd6b981c5
dashboard link: https://syzkaller.appspot.com/bug?extid=ff363b420c81ba0b624c
compiler: gcc (GCC) 9.0.0 20181231 (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+ff363b...@syzkaller.appspotmail.com

RDX: 00007ff8e7b12ae0 RSI: 00000000200001c0 RDI: 00007ff8e7b12b00
RBP: 000000000078bf00 R08: 00007ff8e7b12b40 R09: 00007ff8e7b12ae0
R10: 0000000000000007 R11: 0000000000000206 R12: 0000000000000003
R13: 0000000000000c09 R14: 00000000004ce514 R15: 00007ff8e7b136d4
==================================================================
BUG: KASAN: use-after-free in free_fs_info fs/btrfs/ctree.h:2931 [inline]
BUG: KASAN: use-after-free in btrfs_mount+0x2412/0x2838 fs/btrfs/super.c:1644
Read of size 8 at addr ffff88805b01b298 by task syz-executor.5/13326

CPU: 0 PID: 13326 Comm: syz-executor.5 Not tainted 4.14.184-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x1b2/0x283 lib/dump_stack.c:58
print_address_description.cold+0x54/0x1dc mm/kasan/report.c:252
kasan_report_error mm/kasan/report.c:351 [inline]
kasan_report mm/kasan/report.c:409 [inline]
kasan_report.cold+0xa9/0x2b9 mm/kasan/report.c:393
free_fs_info fs/btrfs/ctree.h:2931 [inline]
btrfs_mount+0x2412/0x2838 fs/btrfs/super.c:1644
mount_fs+0x92/0x2a0 fs/super.c:1237
vfs_kern_mount.part.0+0x5b/0x3c0 fs/namespace.c:1046
vfs_kern_mount+0x3c/0x60 fs/namespace.c:1036
mount_subvol fs/btrfs/super.c:1392 [inline]
btrfs_mount+0x2a0/0x2838 fs/btrfs/super.c:1563
mount_fs+0x92/0x2a0 fs/super.c:1237
vfs_kern_mount.part.0+0x5b/0x3c0 fs/namespace.c:1046
vfs_kern_mount fs/namespace.c:1036 [inline]
do_new_mount fs/namespace.c:2549 [inline]
do_mount+0x3c9/0x25e0 fs/namespace.c:2879
SYSC_mount fs/namespace.c:3095 [inline]
SyS_mount+0xa8/0x120 fs/namespace.c:3072
do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292
entry_SYSCALL_64_after_hwframe+0x46/0xbb
RIP: 0033:0x45f4aa
RSP: 002b:00007ff8e7b12a68 EFLAGS: 00000206 ORIG_RAX: 00000000000000a5
RAX: ffffffffffffffda RBX: 00000000005094e0 RCX: 000000000045f4aa
RDX: 00007ff8e7b12ae0 RSI: 00000000200001c0 RDI: 00007ff8e7b12b00
RBP: 000000000078bf00 R08: 00007ff8e7b12b40 R09: 00007ff8e7b12ae0
R10: 0000000000000007 R11: 0000000000000206 R12: 0000000000000003
R13: 0000000000000c09 R14: 00000000004ce514 R15: 00007ff8e7b136d4

Allocated by task 13326:
save_stack mm/kasan/kasan.c:447 [inline]
set_track mm/kasan/kasan.c:459 [inline]
kasan_kmalloc.part.0+0x4f/0xd0 mm/kasan/kasan.c:551
__do_kmalloc_node mm/slab.c:3682 [inline]
__kmalloc_node+0x4c/0x70 mm/slab.c:3689
kmalloc_node include/linux/slab.h:530 [inline]
kvmalloc_node+0x88/0xd0 mm/util.c:397
kvmalloc include/linux/mm.h:531 [inline]
kvzalloc include/linux/mm.h:539 [inline]
btrfs_mount+0xea4/0x2838 fs/btrfs/super.c:1584
mount_fs+0x92/0x2a0 fs/super.c:1237
vfs_kern_mount.part.0+0x5b/0x3c0 fs/namespace.c:1046
vfs_kern_mount+0x3c/0x60 fs/namespace.c:1036
mount_subvol fs/btrfs/super.c:1392 [inline]
btrfs_mount+0x2a0/0x2838 fs/btrfs/super.c:1563
mount_fs+0x92/0x2a0 fs/super.c:1237
vfs_kern_mount.part.0+0x5b/0x3c0 fs/namespace.c:1046
vfs_kern_mount fs/namespace.c:1036 [inline]
do_new_mount fs/namespace.c:2549 [inline]
do_mount+0x3c9/0x25e0 fs/namespace.c:2879
SYSC_mount fs/namespace.c:3095 [inline]
SyS_mount+0xa8/0x120 fs/namespace.c:3072
do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292
entry_SYSCALL_64_after_hwframe+0x46/0xbb

Freed by task 13326:
save_stack mm/kasan/kasan.c:447 [inline]
set_track mm/kasan/kasan.c:459 [inline]
kasan_slab_free+0xaf/0x190 mm/kasan/kasan.c:524
__cache_free mm/slab.c:3496 [inline]
kfree+0xcb/0x260 mm/slab.c:3815
kvfree+0x45/0x50 mm/util.c:416
deactivate_locked_super+0x6c/0xd0 fs/super.c:319
sget_userns+0x9df/0xc30 fs/super.c:537
sget+0xd1/0x110 fs/super.c:572
btrfs_mount+0x113c/0x2838 fs/btrfs/super.c:1610
mount_fs+0x92/0x2a0 fs/super.c:1237
vfs_kern_mount.part.0+0x5b/0x3c0 fs/namespace.c:1046
vfs_kern_mount+0x3c/0x60 fs/namespace.c:1036
mount_subvol fs/btrfs/super.c:1392 [inline]
btrfs_mount+0x2a0/0x2838 fs/btrfs/super.c:1563
mount_fs+0x92/0x2a0 fs/super.c:1237
vfs_kern_mount.part.0+0x5b/0x3c0 fs/namespace.c:1046
vfs_kern_mount fs/namespace.c:1036 [inline]
do_new_mount fs/namespace.c:2549 [inline]
do_mount+0x3c9/0x25e0 fs/namespace.c:2879
SYSC_mount fs/namespace.c:3095 [inline]
SyS_mount+0xa8/0x120 fs/namespace.c:3072
do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292
entry_SYSCALL_64_after_hwframe+0x46/0xbb

The buggy address belongs to the object at ffff88805b019a00
which belongs to the cache kmalloc-16384 of size 16384
The buggy address is located 6296 bytes inside of
16384-byte region [ffff88805b019a00, ffff88805b01da00)
The buggy address belongs to the page:
page:ffffea00016c0600 count:1 mapcount:0 mapping:ffff88805b019a00 index:0x0 compound_mapcount: 0
flags: 0xfffe0000008100(slab|head)
raw: 00fffe0000008100 ffff88805b019a00 0000000000000000 0000000100000001
raw: ffffea000153b620 ffff8880aa801c48 ffff8880aa802200 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
ffff88805b01b180: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
ffff88805b01b200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>ffff88805b01b280: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
^
ffff88805b01b300: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
ffff88805b01b380: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================


---
This bug 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 bug report. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

syzbot

unread,
Jul 8, 2020, 8:56:18 PM7/8/20
to syzkaller...@googlegroups.com
syzbot has found a reproducer for the following crash on:

HEAD commit: b850307b Linux 4.14.184
git tree: linux-4.14.y
console output: https://syzkaller.appspot.com/x/log.txt?x=1138af2f100000
kernel config: https://syzkaller.appspot.com/x/.config?x=ddc0f08dd6b981c5
dashboard link: https://syzkaller.appspot.com/bug?extid=ff363b420c81ba0b624c
compiler: gcc (GCC) 9.0.0 20181231 (experimental)
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=1531ee1f100000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=17444dff100000

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

RBP: 0000000000000000 R08: 00007fff34f94060 R09: 0000000000000000
R10: 0000000000000005 R11: 0000000000000293 R12: 0000000000000001
R13: 0000000000403100 R14: 0000000000000000 R15: 0000000000000000
==================================================================
BUG: KASAN: use-after-free in free_fs_info fs/btrfs/ctree.h:2931 [inline]
BUG: KASAN: use-after-free in btrfs_mount+0x2412/0x2838 fs/btrfs/super.c:1644
Read of size 8 at addr ffff8880a3c42258 by task syz-executor309/6783

CPU: 0 PID: 6783 Comm: syz-executor309 Not tainted 4.14.184-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x1b2/0x283 lib/dump_stack.c:58
print_address_description.cold+0x54/0x1dc mm/kasan/report.c:252
kasan_report_error mm/kasan/report.c:351 [inline]
kasan_report mm/kasan/report.c:409 [inline]
kasan_report.cold+0xa9/0x2b9 mm/kasan/report.c:393
free_fs_info fs/btrfs/ctree.h:2931 [inline]
btrfs_mount+0x2412/0x2838 fs/btrfs/super.c:1644
mount_fs+0x92/0x2a0 fs/super.c:1237
vfs_kern_mount.part.0+0x5b/0x3c0 fs/namespace.c:1046
vfs_kern_mount+0x3c/0x60 fs/namespace.c:1036
mount_subvol fs/btrfs/super.c:1392 [inline]
btrfs_mount+0x2a0/0x2838 fs/btrfs/super.c:1563
mount_fs+0x92/0x2a0 fs/super.c:1237
vfs_kern_mount.part.0+0x5b/0x3c0 fs/namespace.c:1046
vfs_kern_mount fs/namespace.c:1036 [inline]
do_new_mount fs/namespace.c:2549 [inline]
do_mount+0x3c9/0x25e0 fs/namespace.c:2879
SYSC_mount fs/namespace.c:3095 [inline]
SyS_mount+0xa8/0x120 fs/namespace.c:3072
do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292
entry_SYSCALL_64_after_hwframe+0x46/0xbb
RIP: 0033:0x44898a
RSP: 002b:00007fff34f93fb8 EFLAGS: 00000293 ORIG_RAX: 00000000000000a5
RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 000000000044898a
RDX: 00007fff34f94000 RSI: 00000000200001c0 RDI: 00007fff34f94020
RBP: 0000000000000000 R08: 00007fff34f94060 R09: 0000000000000000
R10: 0000000000000005 R11: 0000000000000293 R12: 0000000000000008
R13: 0000000000403100 R14: 0000000000000000 R15: 0000000000000000

Allocated by task 6783:
save_stack mm/kasan/kasan.c:447 [inline]
set_track mm/kasan/kasan.c:459 [inline]
kasan_kmalloc.part.0+0x4f/0xd0 mm/kasan/kasan.c:551
__do_kmalloc_node mm/slab.c:3682 [inline]
__kmalloc_node+0x4c/0x70 mm/slab.c:3689
kmalloc_node include/linux/slab.h:530 [inline]
kvmalloc_node+0x88/0xd0 mm/util.c:397
kvmalloc include/linux/mm.h:531 [inline]
kvzalloc include/linux/mm.h:539 [inline]
btrfs_mount+0xea4/0x2838 fs/btrfs/super.c:1584
mount_fs+0x92/0x2a0 fs/super.c:1237
vfs_kern_mount.part.0+0x5b/0x3c0 fs/namespace.c:1046
vfs_kern_mount+0x3c/0x60 fs/namespace.c:1036
mount_subvol fs/btrfs/super.c:1392 [inline]
btrfs_mount+0x2a0/0x2838 fs/btrfs/super.c:1563
mount_fs+0x92/0x2a0 fs/super.c:1237
vfs_kern_mount.part.0+0x5b/0x3c0 fs/namespace.c:1046
vfs_kern_mount fs/namespace.c:1036 [inline]
do_new_mount fs/namespace.c:2549 [inline]
do_mount+0x3c9/0x25e0 fs/namespace.c:2879
SYSC_mount fs/namespace.c:3095 [inline]
SyS_mount+0xa8/0x120 fs/namespace.c:3072
do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292
entry_SYSCALL_64_after_hwframe+0x46/0xbb

Freed by task 6783:
save_stack mm/kasan/kasan.c:447 [inline]
set_track mm/kasan/kasan.c:459 [inline]
kasan_slab_free+0xaf/0x190 mm/kasan/kasan.c:524
__cache_free mm/slab.c:3496 [inline]
kfree+0xcb/0x260 mm/slab.c:3815
kvfree+0x45/0x50 mm/util.c:416
deactivate_locked_super+0x6c/0xd0 fs/super.c:319
sget_userns+0x9df/0xc30 fs/super.c:537
sget+0xd1/0x110 fs/super.c:572
btrfs_mount+0x113c/0x2838 fs/btrfs/super.c:1610
mount_fs+0x92/0x2a0 fs/super.c:1237
vfs_kern_mount.part.0+0x5b/0x3c0 fs/namespace.c:1046
vfs_kern_mount+0x3c/0x60 fs/namespace.c:1036
mount_subvol fs/btrfs/super.c:1392 [inline]
btrfs_mount+0x2a0/0x2838 fs/btrfs/super.c:1563
mount_fs+0x92/0x2a0 fs/super.c:1237
vfs_kern_mount.part.0+0x5b/0x3c0 fs/namespace.c:1046
vfs_kern_mount fs/namespace.c:1036 [inline]
do_new_mount fs/namespace.c:2549 [inline]
do_mount+0x3c9/0x25e0 fs/namespace.c:2879
SYSC_mount fs/namespace.c:3095 [inline]
SyS_mount+0xa8/0x120 fs/namespace.c:3072
do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292
entry_SYSCALL_64_after_hwframe+0x46/0xbb

The buggy address belongs to the object at ffff8880a3c409c0
which belongs to the cache kmalloc-16384 of size 16384
The buggy address is located 6296 bytes inside of
16384-byte region [ffff8880a3c409c0, ffff8880a3c449c0)
The buggy address belongs to the page:
page:ffffea00028f1000 count:1 mapcount:0 mapping:ffff8880a3c409c0 index:0x0 compound_mapcount: 0
flags: 0xfffe0000008100(slab|head)
raw: 00fffe0000008100 ffff8880a3c409c0 0000000000000000 0000000100000001
raw: ffffea00022b4c20 ffffea000295bc20 ffff8880aa802200 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
ffff8880a3c42100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
ffff8880a3c42180: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>ffff8880a3c42200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
^
ffff8880a3c42280: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
ffff8880a3c42300: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================

Reply all
Reply to author
Forward
0 new messages