mirror of
https://github.com/torvalds/linux.git
synced 2026-11-06 21:58:01 +01:00
xfs: fix temporary cursor leak in btree shift corruption paths
In xfs_btree_lshift and xfs_btree_rshift, when XFS_IS_CORRUPT detects
an invalid firstrec/lastrec result after xfs_btree_dup_cursor has
successfully allocated a temporary cursor, the error path jumps to
error0 which returns without freeing tcur. This leaks the cursor
memory, the xfs_group reference, and the per-level buffer references
held by the duplicated cursor. Jump to error1 instead, which calls
xfs_btree_del_cursor(tcur, XFS_BTREE_ERROR) to properly release all
resources.
Cc: stable@vger.kernel.org
Fixes: 9eaead51be ("[XFS] implement generic xfs_btree_rshift")
Signed-off-by: Jianyun Gao <jianyungao89@gmail.com>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
This commit is contained in:
parent
1e253beed5
commit
2bbca049de
|
|
@ -2567,7 +2567,7 @@ xfs_btree_lshift(
|
|||
if (XFS_IS_CORRUPT(tcur->bc_mp, i != 1)) {
|
||||
xfs_btree_mark_sick(cur);
|
||||
error = -EFSCORRUPTED;
|
||||
goto error0;
|
||||
goto error1;
|
||||
}
|
||||
|
||||
error = xfs_btree_decrement(tcur, level, &i);
|
||||
|
|
@ -2737,7 +2737,7 @@ xfs_btree_rshift(
|
|||
if (XFS_IS_CORRUPT(tcur->bc_mp, i != 1)) {
|
||||
xfs_btree_mark_sick(cur);
|
||||
error = -EFSCORRUPTED;
|
||||
goto error0;
|
||||
goto error1;
|
||||
}
|
||||
|
||||
error = xfs_btree_increment(tcur, level, &i);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user