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

From: syzbot
Date: Sun Nov 12 2023 - 05:31:13 EST


For archival purposes, forwarding an incoming command email to
linux-kernel@xxxxxxxxxxxxxxx.

***

Subject: Re: [syzbot] [btrfs?] memory leak in btrfs_ref_tree_mod
Author: bragathemanick0908@xxxxxxxxx

#syz test
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
25aa0bebba72

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