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: a5f5e4698f ("jfs: fix shift-out-of-bounds in dbSplit")
Signed-off-by: Zheng Yu <zheng.yu@northwestern.edu>
Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
pull/1310/head
parent
b89798e79c
commit
856db37592
|
|
@ -1815,8 +1815,10 @@ dbAllocCtl(struct bmap * bmp, s64 nblocks, int l2nb, s64 blkno, s64 * results)
|
||||||
return -EIO;
|
return -EIO;
|
||||||
dp = (struct dmap *) mp->data;
|
dp = (struct dmap *) mp->data;
|
||||||
|
|
||||||
if (dp->tree.budmin < 0)
|
if (dp->tree.budmin < 0) {
|
||||||
|
release_metapage(mp);
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
}
|
||||||
|
|
||||||
/* try to allocate the blocks.
|
/* try to allocate the blocks.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue