xfs: don't wrap around quota ids in dqiterate

LOLLM noticed that q_id is an unsigned 32-bit variable.  If it happens
to be set to XFS_DQ_ID_MAX due to a filesystem that actually has a dquot
for ID_MAX, then this addition will truncate to zero and the iteration
starts over.  Fix this by casting to u64.

Cc: stable@vger.kernel.org # v6.8
Fixes: 21d7500929 ("xfs: improve dquot iteration for scrub")
Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
Assisted-by: LOLLM # finding obvious bugs
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
This commit is contained in:
Darrick J. Wong 2026-07-13 23:04:55 -07:00 committed by Carlos Maiolino
parent 60a1dde9d2
commit d766e4e5e8

View File

@ -205,7 +205,7 @@ xchk_dquot_iter(
if (error)
return error;
cursor->id = dq->q_id + 1;
cursor->id = (uint64_t)dq->q_id + 1;
*dqpp = dq;
return 1;
}