forked from luck/tmp_suning_uos_patched
xfs: fix partially uninitialized structure in xfs_reflink_remap_extent
In the reflink extent remap function, it turns out that uirec (the block mapping corresponding only to the part of the passed-in mapping that got unmapped) was not fully initialized. Specifically, br_state was not being copied from the passed-in struct to the uirec. This could lead to unpredictable results such as the reflinked mapping being marked unwritten in the destination file. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Brian Foster <bfoster@redhat.com>
This commit is contained in:
parent
4b674b9ac8
commit
c142932c29
|
@ -1051,6 +1051,7 @@ xfs_reflink_remap_extent(
|
||||||
uirec.br_startblock = irec->br_startblock + rlen;
|
uirec.br_startblock = irec->br_startblock + rlen;
|
||||||
uirec.br_startoff = irec->br_startoff + rlen;
|
uirec.br_startoff = irec->br_startoff + rlen;
|
||||||
uirec.br_blockcount = unmap_len - rlen;
|
uirec.br_blockcount = unmap_len - rlen;
|
||||||
|
uirec.br_state = irec->br_state;
|
||||||
unmap_len = rlen;
|
unmap_len = rlen;
|
||||||
|
|
||||||
/* If this isn't a real mapping, we're done. */
|
/* If this isn't a real mapping, we're done. */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user