xfs: xfs_alloc_get_rec should return EFSCORRUPTED for obvious bnobt corruption
Return -EFSCORRUPTED when the bnobt/cntbt return obviously corrupt values, rather than letting them bounce around in the internal code. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Dave Chinner <dchinner@redhat.com>
This commit is contained in:
parent
b3986010ce
commit
a37f7b127e
@ -231,10 +231,14 @@ xfs_alloc_get_rec(
|
|||||||
int error;
|
int error;
|
||||||
|
|
||||||
error = xfs_btree_get_rec(cur, &rec, stat);
|
error = xfs_btree_get_rec(cur, &rec, stat);
|
||||||
if (!error && *stat == 1) {
|
if (error || !(*stat))
|
||||||
*bno = be32_to_cpu(rec->alloc.ar_startblock);
|
return error;
|
||||||
*len = be32_to_cpu(rec->alloc.ar_blockcount);
|
if (rec->alloc.ar_blockcount == 0)
|
||||||
}
|
return -EFSCORRUPTED;
|
||||||
|
|
||||||
|
*bno = be32_to_cpu(rec->alloc.ar_startblock);
|
||||||
|
*len = be32_to_cpu(rec->alloc.ar_blockcount);
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user