2022-02-14 21:20:04

by Jinyoung Choi

[permalink] [raw]
Subject: [PATCH] scsi: ufs: Fix divide zero case in ufshcd_map_queues()

Before calling blk_mq_map_queues(), the mq_map and nr_queues belonging
to "struct blk_mq_queue_map" must be a vaild value.

If nr_queues is set to 0, the system may encounter the "divide zero"
depending on the type of architecture.

blk_mq_map_queues() -> queue_index()

Signed-off-by: Jinyoung Choi <[email protected]>
---
drivers/scsi/ufs/ufshcd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 41d85b69fa50..36c5ca62ae0c 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -2674,21 +2674,21 @@ static int ufshcd_map_queues(struct Scsi_Host *shost)
for (i = 0; i < shost->nr_maps; i++) {
struct blk_mq_queue_map *map = &shost->tag_set.map[i];

switch (i) {
case HCTX_TYPE_DEFAULT:
case HCTX_TYPE_POLL:
map->nr_queues = 1;
break;
case HCTX_TYPE_READ:
map->nr_queues = 0;
- break;
+ continue;
default:
WARN_ON_ONCE(true);
}
map->queue_offset = 0;
ret = blk_mq_map_queues(map);
WARN_ON_ONCE(ret);
}

return 0;
}
--
2.25.1


2022-02-14 23:28:04

by Bart Van Assche

[permalink] [raw]
Subject: Re: [PATCH] scsi: ufs: Fix divide zero case in ufshcd_map_queues()

On 2/14/22 02:33, Jinyoung CHOI wrote:
> Before calling blk_mq_map_queues(), the mq_map and nr_queues belonging
> to "struct blk_mq_queue_map" must be a vaild value.
^^ ^^^^^
have valid

> If nr_queues is set to 0, the system may encounter the "divide zero"
> depending on the type of architecture.

Anyway:

Reviewed-by: Bart Van Assche <[email protected]>

2022-02-15 02:20:57

by Jinyoung Choi

[permalink] [raw]
Subject: RE:(2) [PATCH] scsi: ufs: Fix divide zero case in ufshcd_map_queues()

>On 2/14/22 02:33, Jinyoung CHOI wrote:
>> Before calling blk_mq_map_queues(), the mq_map and nr_queues belonging
>> to "struct blk_mq_queue_map" must be a vaild value.
>                                     ^^   ^^^^^
>                                   have   valid

>> If nr_queues is set to 0, the system may encounter the "divide zero"
>> depending on the type of architecture.

>Anyway:
>
>Reviewed-by: Bart Van Assche <[email protected]>

Hi, Bart.

Thanks for your review.
I will be careful of typo. :)

Best Regards,
Jinyoung Choi

2022-02-15 06:36:06

by Martin K. Petersen

[permalink] [raw]
Subject: Re: [PATCH] scsi: ufs: Fix divide zero case in ufshcd_map_queues()

On Mon, 14 Feb 2022 19:33:52 +0900, Jinyoung CHOI wrote:

> Before calling blk_mq_map_queues(), the mq_map and nr_queues belonging
> to "struct blk_mq_queue_map" must be a vaild value.
>
> If nr_queues is set to 0, the system may encounter the "divide zero"
> depending on the type of architecture.
>
> blk_mq_map_queues() -> queue_index()
>
> [...]

Applied to 5.17/scsi-fixes, thanks!

[1/1] scsi: ufs: Fix divide zero case in ufshcd_map_queues()
https://git.kernel.org/mkp/scsi/c/10af11564617

--
Martin K. Petersen Oracle Linux Engineering