Message ID | 20190318171505.GA8748@embeddedor (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | scsi: lpfc_nvme: Fix wrong sizeof argument | expand |
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
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
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 --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);
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(-)