summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/xfs/libxfs/xfs_rtbitmap.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/xfs/libxfs/xfs_rtbitmap.c b/fs/xfs/libxfs/xfs_rtbitmap.c
index 7712f282d172..1855182c11ec 100644
--- a/fs/xfs/libxfs/xfs_rtbitmap.c
+++ b/fs/xfs/libxfs/xfs_rtbitmap.c
@@ -1038,8 +1038,11 @@ xfs_rtalloc_query_range(
if (low_rec->ar_startblock > high_rec->ar_startblock)
return -EINVAL;
- else if (low_rec->ar_startblock == high_rec->ar_startblock)
+ if (low_rec->ar_startblock >= mp->m_sb.sb_rextents ||
+ low_rec->ar_startblock == high_rec->ar_startblock)
return 0;
+ if (high_rec->ar_startblock >= mp->m_sb.sb_rextents)
+ high_rec->ar_startblock = mp->m_sb.sb_rextents - 1;
/* Iterate the bitmap, looking for discrepancies. */
rtstart = low_rec->ar_startblock;
@@ -1083,7 +1086,7 @@ xfs_rtalloc_query_all(
struct xfs_rtalloc_rec keys[2];
keys[0].ar_startblock = 0;
- keys[1].ar_startblock = tp->t_mountp->m_sb.sb_rblocks;
+ keys[1].ar_startblock = tp->t_mountp->m_sb.sb_rextents - 1;
keys[0].ar_blockcount = keys[1].ar_blockcount = 0;
return xfs_rtalloc_query_range(tp, &keys[0], &keys[1], fn, priv);