mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
scsi: ufs: core: Fix shift out of bounds when MAXQ=32
According to JESD223F, the maximum number of queues (MAXQ) is 32. When MCQ is enabled and ESI is disabled, nr_hw_queues=32 causes a shift overflow problem. Fix this by using 64-bit intermediate values to handle the nr_hw_queues=32 case safely. Signed-off-by: wangshuaiwei <wangshuaiwei1@xiaomi.com> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Link: https://patch.msgid.link/20260224063228.50112-1-wangshuaiwei1@xiaomi.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
committed by
Martin K. Petersen
parent
62c015373e
commit
2f38fd99c0
@@ -7110,7 +7110,7 @@ static irqreturn_t ufshcd_handle_mcq_cq_events(struct ufs_hba *hba)
|
||||
|
||||
ret = ufshcd_vops_get_outstanding_cqs(hba, &outstanding_cqs);
|
||||
if (ret)
|
||||
outstanding_cqs = (1U << hba->nr_hw_queues) - 1;
|
||||
outstanding_cqs = (1ULL << hba->nr_hw_queues) - 1;
|
||||
|
||||
/* Exclude the poll queues */
|
||||
nr_queues = hba->nr_hw_queues - hba->nr_queues[HCTX_TYPE_POLL];
|
||||
|
||||
Reference in New Issue
Block a user