Commit b66c6f918 ("fs/zfs: Fix a number of memory leaks in ZFS code")
fixes many of the same leaks detected in bug #63846 except one, which
is fixed here.

Fixes: https://savannah.gnu.org/bugs/?63846
Signed-off-by: Glenn Washburn <developm...@efficientek.com>
---
Reviewing some of the bugs on Savannah, I noticed #63846 which, apparently,
independently fixes some of the same leaks as fixed in the more recent
commit b66c6f918. The one change in the Savannah bug patch that I did not find
in b66c6f918 is the one here. The fix has been modified from the original
patch to be in the style of the other similar fixes in b66c6f918.

Glenn
---
 grub-core/fs/zfs/zfs.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/grub-core/fs/zfs/zfs.c b/grub-core/fs/zfs/zfs.c
index bff9d0208b9f..8036b2e31cc5 100644
--- a/grub-core/fs/zfs/zfs.c
+++ b/grub-core/fs/zfs/zfs.c
@@ -3052,6 +3052,7 @@ dnode_get_path (struct subvolume *subvol, const char 
*path_in, dnode_end_t *dn,
          void *sahdrp;
          int hdrsize;
          grub_size_t sz;
+         bool free_sahdrp = false;
 
          if (dnode_path->dn.dn.dn_bonuslen != 0)
            {
@@ -3064,6 +3065,7 @@ dnode_get_path (struct subvolume *subvol, const char 
*path_in, dnode_end_t *dn,
              err = zio_read (bp, dnode_path->dn.endian, &sahdrp, NULL, data);
              if (err)
                break;
+             free_sahdrp = true;
            }
          else
            {
@@ -3122,6 +3124,9 @@ dnode_get_path (struct subvolume *subvol, const char 
*path_in, dnode_end_t *dn,
                     }
              dn_new = dnode_path;
            }
+         if (free_sahdrp)
+           grub_free (sahdrp);
+
        }
     }
 
-- 
2.34.1


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to