diff mbox series

scsi: lpfc_nvme: Fix wrong sizeof argument

Message ID 20190318171505.GA8748@embeddedor (mailing list archive)
State Changes Requested
Headers show
Series scsi: lpfc_nvme: Fix wrong sizeof argument | expand

Commit Message

Gustavo A. R. Silva March 18, 2019, 5:15 p.m. UTC
sizeof() is currently using the wrong argument when used in a call to
memset().  Notice that wqe is a pointer to union lpfc_wqe128, not to
union lpfc_wqe.

Fix this by using union lpfc_wqe128 instead of lpfc_wqe as argument
of sizeof().

Addresses-Coverity-ID: 1443938 ("Wrong sizeof argument")
Fixes: 5fd1108517d9 ("scsi: lpfc: Streamline NVME Initiator WQE setup")
Cc: stable@vger.kernel.org
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
---
 drivers/scsi/lpfc/lpfc_nvme.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

James Bottomley March 18, 2019, 5:44 p.m. UTC | #1
On Mon, 2019-03-18 at 12:15 -0500, Gustavo A. R. Silva wrote:
> sizeof() is currently using the wrong argument when used in a call to
> memset().  Notice that wqe is a pointer to union lpfc_wqe128, not to
> union lpfc_wqe.
> 
> Fix this by using union lpfc_wqe128 instead of lpfc_wqe as argument
> of sizeof().
> 
> Addresses-Coverity-ID: 1443938 ("Wrong sizeof argument")
> Fixes: 5fd1108517d9 ("scsi: lpfc: Streamline NVME Initiator WQE
> setup")
> Cc: stable@vger.kernel.org
> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
> ---
>  drivers/scsi/lpfc/lpfc_nvme.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/scsi/lpfc/lpfc_nvme.c
> b/drivers/scsi/lpfc/lpfc_nvme.c
> index d16ca413110d..3dc0c85c7d50 100644
> --- a/drivers/scsi/lpfc/lpfc_nvme.c
> +++ b/drivers/scsi/lpfc/lpfc_nvme.c
> @@ -1981,7 +1981,7 @@ lpfc_get_nvme_buf(struct lpfc_hba *phba, struct
> lpfc_nodelist *ndlp,
>  		/* Fill in word 3 / sgl_len during cmd submission */
>  
>  		/* Initialize WQE */
> -		memset(wqe, 0, sizeof(union lpfc_wqe));
> +		memset(wqe, 0, sizeof(union lpfc_wqe128));

Actually the correct way to avoid potential problems like this is

	memset(wqe, 0, sizeof(*wqe));

James
Gustavo A. R. Silva March 18, 2019, 6:02 p.m. UTC | #2
On 3/18/19 12:44 PM, James Bottomley wrote:
> On Mon, 2019-03-18 at 12:15 -0500, Gustavo A. R. Silva wrote:
>> sizeof() is currently using the wrong argument when used in a call to
>> memset().  Notice that wqe is a pointer to union lpfc_wqe128, not to
>> union lpfc_wqe.
>>
>> Fix this by using union lpfc_wqe128 instead of lpfc_wqe as argument
>> of sizeof().
>>
>> Addresses-Coverity-ID: 1443938 ("Wrong sizeof argument")
>> Fixes: 5fd1108517d9 ("scsi: lpfc: Streamline NVME Initiator WQE
>> setup")
>> Cc: stable@vger.kernel.org
>> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
>> ---
>>  drivers/scsi/lpfc/lpfc_nvme.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/scsi/lpfc/lpfc_nvme.c
>> b/drivers/scsi/lpfc/lpfc_nvme.c
>> index d16ca413110d..3dc0c85c7d50 100644
>> --- a/drivers/scsi/lpfc/lpfc_nvme.c
>> +++ b/drivers/scsi/lpfc/lpfc_nvme.c
>> @@ -1981,7 +1981,7 @@ lpfc_get_nvme_buf(struct lpfc_hba *phba, struct
>> lpfc_nodelist *ndlp,
>>  		/* Fill in word 3 / sgl_len during cmd submission */
>>  
>>  		/* Initialize WQE */
>> -		memset(wqe, 0, sizeof(union lpfc_wqe));
>> +		memset(wqe, 0, sizeof(union lpfc_wqe128));
> 
> Actually the correct way to avoid potential problems like this is
> 
> 	memset(wqe, 0, sizeof(*wqe));
> 

You,re right.

There are plenty of this kind of issues in lpfc.

I'll write a new patch to address all of them at once.

Thanks
--
Gustavo
James Smart March 18, 2019, 9:58 p.m. UTC | #3
On 3/18/2019 10:44 AM, James Bottomley wrote:
> On Mon, 2019-03-18 at 12:15 -0500, Gustavo A. R. Silva wrote:
>> sizeof() is currently using the wrong argument when used in a call to
>> memset().  Notice that wqe is a pointer to union lpfc_wqe128, not to
>> union lpfc_wqe.
>>
>> Fix this by using union lpfc_wqe128 instead of lpfc_wqe as argument
>> of sizeof().
>>
>> Addresses-Coverity-ID: 1443938 ("Wrong sizeof argument")
>> Fixes: 5fd1108517d9 ("scsi: lpfc: Streamline NVME Initiator WQE
>> setup")
>> Cc: stable@vger.kernel.org
>> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
>> ---
>>   drivers/scsi/lpfc/lpfc_nvme.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/scsi/lpfc/lpfc_nvme.c
>> b/drivers/scsi/lpfc/lpfc_nvme.c
>> index d16ca413110d..3dc0c85c7d50 100644
>> --- a/drivers/scsi/lpfc/lpfc_nvme.c
>> +++ b/drivers/scsi/lpfc/lpfc_nvme.c
>> @@ -1981,7 +1981,7 @@ lpfc_get_nvme_buf(struct lpfc_hba *phba, struct
>> lpfc_nodelist *ndlp,
>>   		/* Fill in word 3 / sgl_len during cmd submission */
>>   
>>   		/* Initialize WQE */
>> -		memset(wqe, 0, sizeof(union lpfc_wqe));
>> +		memset(wqe, 0, sizeof(union lpfc_wqe128));
> Actually the correct way to avoid potential problems like this is
>
> 	memset(wqe, 0, sizeof(*wqe));
>
> James
>

Agree with James on style.   This one reference was a little 
interesting. It purposely was something smaller than the whole structure 
as the latter end of the structure ends up getting set later.  But not a 
big deal to correct as indicated.

--james
diff mbox series

Patch

diff --git a/drivers/scsi/lpfc/lpfc_nvme.c b/drivers/scsi/lpfc/lpfc_nvme.c
index d16ca413110d..3dc0c85c7d50 100644
--- a/drivers/scsi/lpfc/lpfc_nvme.c
+++ b/drivers/scsi/lpfc/lpfc_nvme.c
@@ -1981,7 +1981,7 @@  lpfc_get_nvme_buf(struct lpfc_hba *phba, struct lpfc_nodelist *ndlp,
 		/* Fill in word 3 / sgl_len during cmd submission */
 
 		/* Initialize WQE */
-		memset(wqe, 0, sizeof(union lpfc_wqe));
+		memset(wqe, 0, sizeof(union lpfc_wqe128));
 
 		if (lpfc_ndlp_check_qdepth(phba, ndlp)) {
 			atomic_inc(&ndlp->cmd_pending);