[syzbot] [btrfs?] memory leak in btrfs_ref_tree_mod

22 views
Skip to first unread message

syzbot

unread,
Aug 15, 2023, 5:15:17 AM8/15/23
to c...@fb.com, dst...@suse.com, jo...@toxicpanda.com, linux...@vger.kernel.org, linux-...@vger.kernel.org, linux-...@vger.kernel.org, syzkall...@googlegroups.com
Hello,

syzbot found the following issue on:

HEAD commit: 25aa0bebba72 Merge tag 'net-6.5-rc6' of git://git.kernel.o..
git tree: upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=169577fda80000
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
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=148191c3a80000

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/76b0857d2814/disk-25aa0beb.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/a01574755257/vmlinux-25aa0beb.xz
kernel image: https://storage.googleapis.com/syzbot-assets/262002db770e/bzImage-25aa0beb.xz
mounted in repro: https://storage.googleapis.com/syzbot-assets/b93cffaa6717/mount_0.gz

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

BUG: memory leak
unreferenced object 0xffff888129851240 (size 64):
comm "syz-executor.0", pid 5069, jiffies 4294977377 (age 16.480s)
hex dump (first 32 bytes):
01 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
[<ffffffff821731b1>] kmalloc include/linux/slab.h:582 [inline]
[<ffffffff821731b1>] btrfs_ref_tree_mod+0x211/0xb80 fs/btrfs/ref-verify.c:768
[<ffffffff820444f6>] btrfs_free_tree_block+0x116/0x450 fs/btrfs/extent-tree.c:3250
[<ffffffff8202d775>] __btrfs_cow_block+0x6a5/0xa30 fs/btrfs/ctree.c:601
[<ffffffff8202dc54>] btrfs_cow_block+0x154/0x2b0 fs/btrfs/ctree.c:712
[<ffffffff8206013c>] commit_cowonly_roots+0x8c/0x3f0 fs/btrfs/transaction.c:1276
[<ffffffff820647c9>] btrfs_commit_transaction+0x999/0x15c0 fs/btrfs/transaction.c:2410
[<ffffffff8205a516>] btrfs_commit_super+0x86/0xb0 fs/btrfs/disk-io.c:4195
[<ffffffff8205c743>] close_ctree+0x543/0x730 fs/btrfs/disk-io.c:4349
[<ffffffff8166b44e>] generic_shutdown_super+0x9e/0x1c0 fs/super.c:499
[<ffffffff8166b769>] kill_anon_super+0x19/0x30 fs/super.c:1110
[<ffffffff8202357d>] btrfs_kill_super+0x1d/0x30 fs/btrfs/super.c:2138
[<ffffffff8166ca46>] deactivate_locked_super+0x46/0xd0 fs/super.c:330
[<ffffffff8166cb6c>] deactivate_super fs/super.c:361 [inline]
[<ffffffff8166cb6c>] deactivate_super+0x9c/0xb0 fs/super.c:357
[<ffffffff816a8931>] cleanup_mnt+0x121/0x210 fs/namespace.c:1254
[<ffffffff812becaf>] task_work_run+0x8f/0xe0 kernel/task_work.c:179



---
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.

If the bug is already fixed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.

If you want to change bug's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the bug is a duplicate of another bug, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup

Tomas Bortoli

unread,
Sep 13, 2023, 7:00:20 AM9/13/23
to syzkaller-bugs

diff --git a/fs/btrfs/ref-verify.c b/fs/btrfs/ref-verify.c
index 95d28497de7c..c4c59ff4d6c8 100644
--- a/fs/btrfs/ref-verify.c
+++ b/fs/btrfs/ref-verify.c
@@ -884,6 +884,7 @@ int btrfs_ref_tree_mod(struct btrfs_fs_info *fs_info,
 out_unlock:
        spin_unlock(&fs_info->ref_verify_lock);
 out:
+       kfree(re);
        if (ret)
                btrfs_clear_opt(fs_info->mount_opt, REF_VERIFY);
        return ret;

Bragatheswaran Manickavel

unread,
Nov 12, 2023, 2:49:46 PM11/12/23
to syzbot, syzkall...@googlegroups.com
#syz test

diff --git a/fs/btrfs/ref-verify.c b/fs/btrfs/ref-verify.c
index 95d28497de7c..fbb24c65eeb0 100644
--- a/fs/btrfs/ref-verify.c
+++ b/fs/btrfs/ref-verify.c
@@ -791,6 +791,7 @@ int btrfs_ref_tree_mod(struct btrfs_fs_info *fs_info,
             dump_ref_action(fs_info, ra);
             kfree(ref);
             kfree(ra);
+            kfree(re);
             goto out_unlock;
         } else if (be->num_refs == 0) {
             btrfs_err(fs_info,
@@ -800,6 +801,7 @@ int btrfs_ref_tree_mod(struct btrfs_fs_info *fs_info,
             dump_ref_action(fs_info, ra);
             kfree(ref);
             kfree(ra);
+            kfree(re);
             goto out_unlock;
         }

@@ -822,6 +824,7 @@ int btrfs_ref_tree_mod(struct btrfs_fs_info *fs_info,
                 dump_ref_action(fs_info, ra);
                 kfree(ref);
                 kfree(ra);
+                kfree(re);
                 goto out_unlock;
             }
             exist->num_refs--;
@@ -838,6 +841,7 @@ int btrfs_ref_tree_mod(struct btrfs_fs_info *fs_info,
             dump_ref_action(fs_info, ra);
             kfree(ref);
             kfree(ra);
+            kfree(re);
             goto out_unlock;
         }
         kfree(ref);
@@ -849,6 +853,7 @@ int btrfs_ref_tree_mod(struct btrfs_fs_info *fs_info,
             dump_ref_action(fs_info, ra);
             kfree(ref);
             kfree(ra);
+            kfree(re);
             goto out_unlock;
         }
     }
@@ -881,6 +886,8 @@ int btrfs_ref_tree_mod(struct btrfs_fs_info *fs_info,
     }
     list_add_tail(&ra->list, &be->actions);
     ret = 0;
+    kfree(ra);
+    kfree(re);
 out_unlock:
     spin_unlock(&fs_info->ref_verify_lock);
 out:

Bragatheswaran Manickavel

unread,
Nov 12, 2023, 2:49:46 PM11/12/23
to syzbot, syzkall...@googlegroups.com

Bragatheswaran Manickavel

unread,
Nov 12, 2023, 2:52:05 PM11/12/23
to syzbot, c...@fb.com, dst...@suse.com, jo...@toxicpanda.com, linux...@vger.kernel.org, linux-...@vger.kernel.org, linux-...@vger.kernel.org, syzkall...@googlegroups.com
#syz test:
git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
25aa0bebba72b318e71fe205bfd1236550cc9534

On 15/08/23 14:45, syzbot wrote:
btrfs.diff

Bragatheswaran Manickavel

unread,
Nov 12, 2023, 2:52:06 PM11/12/23
to syzbot, syzkall...@googlegroups.com
#syz test:
git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
25aa0bebba72b318e71fe205bfd1236550cc9534

On 15/08/23 14:45, syzbot wrote:
btrfs.diff

Bragatheswaran Manickavel

unread,
Nov 16, 2023, 4:42:20 AM11/16/23
to syzbot, syzkall...@googlegroups.com
#syz test:
git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
25aa0bebba72b318e71fe205bfd1236550cc9534

On 15/08/23 14:45, syzbot wrote:
btrfs_v2.diff

syzbot

unread,
Nov 16, 2023, 5:22:07 AM11/16/23
to bragathem...@gmail.com, linux-...@vger.kernel.org, syzkall...@googlegroups.com
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

Reply all
Reply to author
Forward
0 new messages