Re: [PATCH] scsi: bnx2fc: fix incorrect cast to u64 on shift operation

From: Saurav Kashyap
Date: Wed May 08 2019 - 04:57:28 EST




-----Original Message-----
From: <linux-scsi-owner@xxxxxxxxxxxxxxx> on behalf of Colin King
<colin.king@xxxxxxxxxxxxx>
Date: Saturday, 4 May 2019 at 10:18 PM
To: "QLogic-Storage-Upstream@xxxxxxxxxx"
<QLogic-Storage-Upstream@xxxxxxxxxx>, "James E . J . Bottomley"
<jejb@xxxxxxxxxxxxx>, "Martin K . Petersen" <martin.petersen@xxxxxxxxxx>,
"linux-scsi@xxxxxxxxxxxxxxx" <linux-scsi@xxxxxxxxxxxxxxx>
Cc: "kernel-janitors@xxxxxxxxxxxxxxx" <kernel-janitors@xxxxxxxxxxxxxxx>,
"linux-kernel@xxxxxxxxxxxxxxx" <linux-kernel@xxxxxxxxxxxxxxx>
Subject: [PATCH] scsi: bnx2fc: fix incorrect cast to u64 on shift operation

>From: Colin Ian King <colin.king@xxxxxxxxxxxxx>
>
>Currently an int is being shifted and the result is being cast to a u64
>which leads to undefined behaviour if the shift is more than 31 bits. Fix
>this by casting the integer value 1 to u64 before the shift operation.
>
>Addresses-Coverity: ("Bad shift operation")
>Fixes: 7b594769120b ("[SCSI] bnx2fc: Handle REC_TOV error code from
>firmware")
>Signed-off-by: Colin Ian King <colin.king@xxxxxxxxxxxxx>
>---
> drivers/scsi/bnx2fc/bnx2fc_hwi.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>diff --git a/drivers/scsi/bnx2fc/bnx2fc_hwi.c
>b/drivers/scsi/bnx2fc/bnx2fc_hwi.c
>index 19734ec7f42e..747f019fb393 100644
>--- a/drivers/scsi/bnx2fc/bnx2fc_hwi.c
>+++ b/drivers/scsi/bnx2fc/bnx2fc_hwi.c
>@@ -830,7 +830,7 @@ static void bnx2fc_process_unsol_compl(struct
>bnx2fc_rport *tgt, u16 wqe)
> ((u64)err_entry->data.err_warn_bitmap_hi << 32) |
> (u64)err_entry->data.err_warn_bitmap_lo;
> for (i = 0; i < BNX2FC_NUM_ERR_BITS; i++) {
>- if (err_warn_bit_map & (u64) (1 << i)) {
>+ if (err_warn_bit_map & ((u64)1 << i)) {
> err_warn = i;
> break;
> }
>--
>2.20.1

Thanks for the Patch.

Acked-by: Saurav Kashyap <skashyap@xxxxxxxxxxx>

>