Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a3a374bf authored by Darrick J. Wong's avatar Darrick J. Wong
Browse files

xfs: fix off-by-one error in xfs_rtalloc_query_range



In commit 8ad560d2 ("xfs: strengthen rtalloc query range checks")
we strengthened the input parameter checks in the rtbitmap range query
function, but introduced an off-by-one error in the process.  The call
to xfs_rtfind_forw deals with the high key being rextents, but we clamp
the high key to rextents - 1.  This causes the returned results to stop
one block short of the end of the rtdev, which is incorrect.

Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: default avatarAllison Henderson <allison.henderson@oracle.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
parent 232d0a24
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1029,8 +1029,8 @@ xfs_rtalloc_query_range(
	if (low_rec->ar_startext >= mp->m_sb.sb_rextents ||
	    low_rec->ar_startext == high_rec->ar_startext)
		return 0;
	if (high_rec->ar_startext >= mp->m_sb.sb_rextents)
		high_rec->ar_startext = mp->m_sb.sb_rextents - 1;
	if (high_rec->ar_startext > mp->m_sb.sb_rextents)
		high_rec->ar_startext = mp->m_sb.sb_rextents;

	/* Iterate the bitmap, looking for discrepancies. */
	rtstart = low_rec->ar_startext;