Re: [syzbot] [btrfs?] memory leak in btrfs_ref_tree_mod

From: syzbot
Date: Thu Nov 16 2023 - 05:22:10 EST


Hello,

syzbot has tested the proposed patch but the reproducer is still triggering an issue:
memory leak in add_tree_block

BUG: memory leak
unreferenced object 0xffff88812611f380 (size 64):
comm "syz-executor.5", pid 7474, jiffies 4294960257 (age 171.960s)
hex dump (first 32 bytes):
03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
backtrace:
[<ffffffff815545e5>] kmalloc_trace+0x25/0x90 mm/slab_common.c:1076
[<ffffffff82172d99>] kmalloc include/linux/slab.h:582 [inline]
[<ffffffff82172d99>] add_tree_block+0x39/0x240 fs/btrfs/ref-verify.c:319
[<ffffffff821743f9>] process_extent_item fs/btrfs/ref-verify.c:474 [inline]
[<ffffffff821743f9>] process_leaf fs/btrfs/ref-verify.c:521 [inline]
[<ffffffff821743f9>] walk_down_tree fs/btrfs/ref-verify.c:573 [inline]
[<ffffffff821743f9>] btrfs_build_ref_tree+0x589/0x850 fs/btrfs/ref-verify.c:1008
[<ffffffff8205ec90>] open_ctree+0x1890/0x2270 fs/btrfs/disk-io.c:3471
[<ffffffff8202582f>] btrfs_fill_super fs/btrfs/super.c:1154 [inline]
[<ffffffff8202582f>] btrfs_mount_root+0x5af/0x750 fs/btrfs/super.c:1519
[<ffffffff816d3e39>] legacy_get_tree+0x29/0x80 fs/fs_context.c:611
[<ffffffff8166b7ea>] vfs_get_tree+0x2a/0x110 fs/super.c:1519
[<ffffffff816a776b>] fc_mount fs/namespace.c:1112 [inline]
[<ffffffff816a776b>] vfs_kern_mount.part.0+0xcb/0x110 fs/namespace.c:1142
[<ffffffff816a77ef>] vfs_kern_mount+0x3f/0x60 fs/namespace.c:1129
[<ffffffff820298b2>] btrfs_mount+0x1e2/0x660 fs/btrfs/super.c:1579
[<ffffffff816d3e39>] legacy_get_tree+0x29/0x80 fs/fs_context.c:611
[<ffffffff8166b7ea>] vfs_get_tree+0x2a/0x110 fs/super.c:1519
[<ffffffff816afcff>] do_new_mount fs/namespace.c:3335 [inline]
[<ffffffff816afcff>] path_mount+0xc8f/0x10d0 fs/namespace.c:3662
[<ffffffff816b08f1>] do_mount fs/namespace.c:3675 [inline]
[<ffffffff816b08f1>] __do_sys_mount fs/namespace.c:3884 [inline]
[<ffffffff816b08f1>] __se_sys_mount fs/namespace.c:3861 [inline]
[<ffffffff816b08f1>] __x64_sys_mount+0x1a1/0x1f0 fs/namespace.c:3861
[<ffffffff84ad2bb8>] do_syscall_x64 arch/x86/entry/common.c:50 [inline]
[<ffffffff84ad2bb8>] do_syscall_64+0x38/0xb0 arch/x86/entry/common.c:80
[<ffffffff84c0008b>] entry_SYSCALL_64_after_hwframe+0x63/0xcd

BUG: memory leak
unreferenced object 0xffff88812611f500 (size 64):
comm "syz-executor.5", pid 7474, jiffies 4294960257 (age 171.960s)
hex dump (first 32 bytes):
03 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ................
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
backtrace:
[<ffffffff815545e5>] kmalloc_trace+0x25/0x90 mm/slab_common.c:1076
[<ffffffff82172755>] kmalloc include/linux/slab.h:582 [inline]
[<ffffffff82172755>] kzalloc include/linux/slab.h:703 [inline]
[<ffffffff82172755>] add_block_entry+0x35/0x320 fs/btrfs/ref-verify.c:270
[<ffffffff82172df6>] add_tree_block+0x96/0x240 fs/btrfs/ref-verify.c:332
[<ffffffff821743f9>] process_extent_item fs/btrfs/ref-verify.c:474 [inline]
[<ffffffff821743f9>] process_leaf fs/btrfs/ref-verify.c:521 [inline]
[<ffffffff821743f9>] walk_down_tree fs/btrfs/ref-verify.c:573 [inline]
[<ffffffff821743f9>] btrfs_build_ref_tree+0x589/0x850 fs/btrfs/ref-verify.c:1008
[<ffffffff8205ec90>] open_ctree+0x1890/0x2270 fs/btrfs/disk-io.c:3471
[<ffffffff8202582f>] btrfs_fill_super fs/btrfs/super.c:1154 [inline]
[<ffffffff8202582f>] btrfs_mount_root+0x5af/0x750 fs/btrfs/super.c:1519
[<ffffffff816d3e39>] legacy_get_tree+0x29/0x80 fs/fs_context.c:611
[<ffffffff8166b7ea>] vfs_get_tree+0x2a/0x110 fs/super.c:1519
[<ffffffff816a776b>] fc_mount fs/namespace.c:1112 [inline]
[<ffffffff816a776b>] vfs_kern_mount.part.0+0xcb/0x110 fs/namespace.c:1142
[<ffffffff816a77ef>] vfs_kern_mount+0x3f/0x60 fs/namespace.c:1129
[<ffffffff820298b2>] btrfs_mount+0x1e2/0x660 fs/btrfs/super.c:1579
[<ffffffff816d3e39>] legacy_get_tree+0x29/0x80 fs/fs_context.c:611
[<ffffffff8166b7ea>] vfs_get_tree+0x2a/0x110 fs/super.c:1519
[<ffffffff816afcff>] do_new_mount fs/namespace.c:3335 [inline]
[<ffffffff816afcff>] path_mount+0xc8f/0x10d0 fs/namespace.c:3662
[<ffffffff816b08f1>] do_mount fs/namespace.c:3675 [inline]
[<ffffffff816b08f1>] __do_sys_mount fs/namespace.c:3884 [inline]
[<ffffffff816b08f1>] __se_sys_mount fs/namespace.c:3861 [inline]
[<ffffffff816b08f1>] __x64_sys_mount+0x1a1/0x1f0 fs/namespace.c:3861
[<ffffffff84ad2bb8>] do_syscall_x64 arch/x86/entry/common.c:50 [inline]
[<ffffffff84ad2bb8>] do_syscall_64+0x38/0xb0 arch/x86/entry/common.c:80

BUG: memory leak
unreferenced object 0xffff8881260d4300 (size 96):
comm "syz-executor.5", pid 7474, jiffies 4294960257 (age 171.960s)
hex dump (first 32 bytes):
00 10 10 00 00 00 00 00 00 10 00 00 00 00 00 00 ................
01 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 ................
backtrace:
[<ffffffff815545e5>] kmalloc_trace+0x25/0x90 mm/slab_common.c:1076
[<ffffffff8217276e>] kmalloc include/linux/slab.h:582 [inline]
[<ffffffff8217276e>] kzalloc include/linux/slab.h:703 [inline]
[<ffffffff8217276e>] add_block_entry+0x4e/0x320 fs/btrfs/ref-verify.c:271
[<ffffffff82172df6>] add_tree_block+0x96/0x240 fs/btrfs/ref-verify.c:332
[<ffffffff821743f9>] process_extent_item fs/btrfs/ref-verify.c:474 [inline]
[<ffffffff821743f9>] process_leaf fs/btrfs/ref-verify.c:521 [inline]
[<ffffffff821743f9>] walk_down_tree fs/btrfs/ref-verify.c:573 [inline]
[<ffffffff821743f9>] btrfs_build_ref_tree+0x589/0x850 fs/btrfs/ref-verify.c:1008
[<ffffffff8205ec90>] open_ctree+0x1890/0x2270 fs/btrfs/disk-io.c:3471
[<ffffffff8202582f>] btrfs_fill_super fs/btrfs/super.c:1154 [inline]
[<ffffffff8202582f>] btrfs_mount_root+0x5af/0x750 fs/btrfs/super.c:1519
[<ffffffff816d3e39>] legacy_get_tree+0x29/0x80 fs/fs_context.c:611
[<ffffffff8166b7ea>] vfs_get_tree+0x2a/0x110 fs/super.c:1519
[<ffffffff816a776b>] fc_mount fs/namespace.c:1112 [inline]
[<ffffffff816a776b>] vfs_kern_mount.part.0+0xcb/0x110 fs/namespace.c:1142
[<ffffffff816a77ef>] vfs_kern_mount+0x3f/0x60 fs/namespace.c:1129
[<ffffffff820298b2>] btrfs_mount+0x1e2/0x660 fs/btrfs/super.c:1579
[<ffffffff816d3e39>] legacy_get_tree+0x29/0x80 fs/fs_context.c:611
[<ffffffff8166b7ea>] vfs_get_tree+0x2a/0x110 fs/super.c:1519
[<ffffffff816afcff>] do_new_mount fs/namespace.c:3335 [inline]
[<ffffffff816afcff>] path_mount+0xc8f/0x10d0 fs/namespace.c:3662
[<ffffffff816b08f1>] do_mount fs/namespace.c:3675 [inline]
[<ffffffff816b08f1>] __do_sys_mount fs/namespace.c:3884 [inline]
[<ffffffff816b08f1>] __se_sys_mount fs/namespace.c:3861 [inline]
[<ffffffff816b08f1>] __x64_sys_mount+0x1a1/0x1f0 fs/namespace.c:3861
[<ffffffff84ad2bb8>] do_syscall_x64 arch/x86/entry/common.c:50 [inline]
[<ffffffff84ad2bb8>] do_syscall_64+0x38/0xb0 arch/x86/entry/common.c:80



Tested on:

commit: 25aa0beb Merge tag 'net-6.5-rc6' of git://git.kernel.o..
git tree: git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
console output: https://syzkaller.appspot.com/x/log.txt?x=11a0c5b7680000
kernel config: https://syzkaller.appspot.com/x/.config?x=2bf8962e4f7984f4
dashboard link: https://syzkaller.appspot.com/bug?extid=d66de4cbf532749df35f
compiler: gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40
patch: https://syzkaller.appspot.com/x/patch.diff?x=1799b938e80000