From: Zheng Yu Date: Tue, 29 Jul 2025 01:22:14 +0000 (+0000) Subject: jfs: fix metapage reference count leak in dbAllocCtl X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=856db37592021e9155384094e331e2d4589f28b1;p=thirdparty%2Flinux.git jfs: fix metapage reference count leak in dbAllocCtl In dbAllocCtl(), read_metapage() increases the reference count of the metapage. However, when dp->tree.budmin < 0, the function returns -EIO without calling release_metapage() to decrease the reference count, leading to a memory leak. Add release_metapage(mp) before the error return to properly manage the metapage reference count and prevent the leak. Fixes: a5f5e4698f8abbb25fe4959814093fb5bfa1aa9d ("jfs: fix shift-out-of-bounds in dbSplit") Signed-off-by: Zheng Yu Signed-off-by: Dave Kleikamp --- diff --git a/fs/jfs/jfs_dmap.c b/fs/jfs/jfs_dmap.c index 5080d59089bd7..cdfa699cd7c8f 100644 --- a/fs/jfs/jfs_dmap.c +++ b/fs/jfs/jfs_dmap.c @@ -1815,8 +1815,10 @@ dbAllocCtl(struct bmap * bmp, s64 nblocks, int l2nb, s64 blkno, s64 * results) return -EIO; dp = (struct dmap *) mp->data; - if (dp->tree.budmin < 0) + if (dp->tree.budmin < 0) { + release_metapage(mp); return -EIO; + } /* try to allocate the blocks. */