From: Glenn Washburn Date: Mon, 5 May 2025 22:09:19 +0000 (-0500) Subject: fs/zfs: Fix another memory leak in ZFS code X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=34bd00ee2663e5233649f1e32bba47b4184b9435;p=thirdparty%2Fgrub.git fs/zfs: Fix another memory leak in ZFS code 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 Fixes: b66c6f918 (fs/zfs: Fix a number of memory leaks in ZFS code) Signed-off-by: Glenn Washburn Reviewed-by: Daniel Kiper --- diff --git a/grub-core/fs/zfs/zfs.c b/grub-core/fs/zfs/zfs.c index bff9d0208..afe821f9b 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 == true) + grub_free (sahdrp); + } }