Re: [PATCH] scsi: lpfc_nvme: Fix wrong sizeof argument

From: James Bottomley
Date: Mon Mar 18 2019 - 13:45:39 EST


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@xxxxxxxxxxxxxxx
> Signed-off-by: Gustavo A. R. Silva <gustavo@xxxxxxxxxxxxxx>
> ---
> 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