jfs: Fix memleak in dbAdjCtl

When dbBackSplit() fails, mp should be released to
prevent memleak. It's the same when dbJoin() fails.

Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
This commit is contained in:
Dinghao Liu 2020-08-27 15:12:38 +08:00 committed by Dave Kleikamp
parent ed1c9a7a85
commit 751341b4d7
1 changed files with 6 additions and 2 deletions

View File

@ -2549,16 +2549,20 @@ dbAdjCtl(struct bmap * bmp, s64 blkno, int newval, int alloc, int level)
*/
if (oldval == NOFREE) {
rc = dbBackSplit((dmtree_t *) dcp, leafno);
if (rc)
if (rc) {
release_metapage(mp);
return rc;
}
oldval = dcp->stree[ti];
}
dbSplit((dmtree_t *) dcp, leafno, dcp->budmin, newval);
} else {
rc = dbJoin((dmtree_t *) dcp, leafno, newval);
if (rc)
if (rc) {
release_metapage(mp);
return rc;
}
}
/* check if the root of the current dmap control page changed due
* to the update and if the current dmap control page is not at