diff options
Diffstat (limited to 'fs/xfs/libxfs/xfs_alloc.c')
| -rw-r--r-- | fs/xfs/libxfs/xfs_alloc.c | 5 | 
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/xfs/libxfs/xfs_alloc.c b/fs/xfs/libxfs/xfs_alloc.c index eef466260d43..75dbdc14c45f 100644 --- a/fs/xfs/libxfs/xfs_alloc.c +++ b/fs/xfs/libxfs/xfs_alloc.c @@ -223,12 +223,13 @@ xfs_alloc_get_rec(  	error = xfs_btree_get_rec(cur, &rec, stat);  	if (error || !(*stat))  		return error; -	if (rec->alloc.ar_blockcount == 0) -		goto out_bad_rec;  	*bno = be32_to_cpu(rec->alloc.ar_startblock);  	*len = be32_to_cpu(rec->alloc.ar_blockcount); +	if (*len == 0) +		goto out_bad_rec; +  	/* check for valid extent range, including overflow */  	if (!xfs_verify_agbno(mp, agno, *bno))  		goto out_bad_rec;  | 
