mpt3sas: cut and paste bug storing trigger mpi
Subsystems (3)
PATCH 1/1 mpt3sas: cut and paste bug storing trigger mpi
ioc->diag_trigger_mpi is an SL_WH_MPI_TRIGGERS_T struct.
There is a cut and paste error here and SL_WH_EVENT_TRIGGERS_T is used instead of SL_WH_MPI_TRIGGERS_T. Since the SL_WH_EVENT_TRIGGERS_T is smaller than SL_WH_MPI_TRIGGERS_T, it means we only clear part of the buffer.
---
Only needed in linux-next.
This is a static analysis patch. Even though I'm pretty sure it's correct, I'm not able to test it.
drivers/scsi/mpt3sas/mpt3sas_ctl.c +1 -1
@@ -3136,7 +3136,7 @@ _ctl_diag_trigger_mpi_store(struct device *cdev,spin_lock_irqsave (&ioc->diag_trigger_lock, flags); sz =min (sizeof (struct SL_WH_MPI_TRIGGERS_T ), count);memset (&ioc->diag_trigger_mpi,0 , -sizeof (struct SL_WH_EVENT_TRIGGERS_T )); +sizeof (struct SL_WH_MPI_TRIGGERS_T ));memcpy (&ioc->diag_trigger_mpi, buf, sz);if (ioc->diag_trigger_mpi.ValidEntries >NUM_VALID_ENTRIES ) ioc->diag_trigger_mpi.ValidEntries =NUM_VALID_ENTRIES ;
Quoted 29 lines
ioc->diag_trigger_mpiis anSL_WH_MPI_TRIGGERS_Tstruct.There is a cut and paste error here and
SL_WH_EVENT_TRIGGERS_Tis used
instead ofSL_WH_MPI_TRIGGERS_T. Since theSL_WH_EVENT_TRIGGERS_Tis smaller thanSL_WH_MPI_TRIGGERS_T, it means we only clear part of the buffer.Signed-off-by Dan Carpenter <[email protected]>---
Only needed in linux-next.This is a static analysis patch. Even though I'm pretty sure it's correct, I'm not able to test it.
drivers/scsi/mpt3sas/mpt3sas_ctl.c +1
-1@@ -3136,7 +3136,7 @@ _ctl_diag_trigger_mpi_store(struct device *cdev,spin_lock_irqsave (&ioc->diag_trigger_lock, flags); sz =min (sizeof (struct SL_WH_MPI_TRIGGERS_T ), count);memset (&ioc->diag_trigger_mpi,0 , -sizeof (struct SL_WH_EVENT_TRIGGERS_T )); +sizeof (struct SL_WH_MPI_TRIGGERS_T ));memcpy (&ioc->diag_trigger_mpi, buf, sz);if (ioc->diag_trigger_mpi.ValidEntries >NUM_VALID_ENTRIES )
Quoted 1 line
ioc->diag_trigger_mpi.ValidEntries=NUM_VALID_ENTRIES;
Then just use sizeof(ioc->diag_trigger_mpi), then it's irrelevant how that type is ever called.
Eike
PATCH v2 1/1 mpt3sas: cut and paste bug storing trigger mpi
ioc->diag_trigger_mpi is an SL_WH_MPI_TRIGGERS_T struct.
There is a cut and paste error here and SL_WH_EVENT_TRIGGERS_T is used instead of SL_WH_MPI_TRIGGERS_T. Since the SL_WH_EVENT_TRIGGERS_T is smaller than SL_WH_MPI_TRIGGERS_T, it means we only clear part of the buffer.
I've changed it to use sizeof(ioc->diag_trigger_mpi) which is a bit simpler.
---
v2: Style tweak.
Only needed in linux-next.
This is a static analysis patch. Even though I'm pretty sure it's correct, I'm not able to test it.
drivers/scsi/mpt3sas/mpt3sas_ctl.c +1 -1
@@ -3136,7 +3136,7 @@ _ctl_diag_trigger_mpi_store(struct device *cdev,spin_lock_irqsave (&ioc->diag_trigger_lock, flags); sz =min (sizeof (struct SL_WH_MPI_TRIGGERS_T ), count);memset (&ioc->diag_trigger_mpi,0 , -sizeof (struct SL_WH_EVENT_TRIGGERS_T )); +sizeof (ioc->diag_trigger_mpi));memcpy (&ioc->diag_trigger_mpi, buf, sz);if (ioc->diag_trigger_mpi.ValidEntries >NUM_VALID_ENTRIES ) ioc->diag_trigger_mpi.ValidEntries =NUM_VALID_ENTRIES ;
Quoted 10 lines · Rolf Eike Beer
Quoted 6 lines
memset(&ioc->diag_trigger_mpi, 0,drivers/scsi/mpt3sas/mpt3sas_ctl.c +1
-1- sizeof(struct SL_WH_EVENT_TRIGGERS_T)); + sizeof(struct SL_WH_MPI_TRIGGERS_T));memcpy(&ioc->diag_trigger_mpi, buf, sz); if (ioc->diag_trigger_mpi.ValidEntries > NUM_VALID_ENTRIES) ioc->diag_trigger_mpi.ValidEntries = NUM_VALID_ENTRIES;Then just use
sizeof(ioc->diag_trigger_mpi), then it's irrelevant how that type is ever called.
Yeah, that's the way I would have prefered to write this as well. It took me a while to verify that the intent here was not to clear only part of the struct. Using sizeof(variable_name) instead of sizeof(type) is more readable.
But then you get into the thing where the line before uses sizeof(type)...
Oh well, I've sent both styles and the maintainer can choose. :)
regards,
dan carpenter
James,
This patch seem to be fine. Please consider this patch as Acked-by: "Sreekanth Reddy" <[email protected]>
Regards,
Sreekanth.
-----Original Message-----
From: Dan Carpenter [mailto:[email protected]]
Sent: Friday, December 07, 2012 11:58 AM
To: Nandigama, Nagalakshmi
Cc: Reddy, Sreekanth; Support; James E.J. Bottomley; DL-MPT Fusion Linux; [email protected]; [email protected]; [email protected]
Subject: [patch] [SCSI] mpt3sas: cut and paste bug storing trigger mpi
ioc->diag_trigger_mpi is an SL_WH_MPI_TRIGGERS_T struct.
There is a cut and paste error here and SL_WH_EVENT_TRIGGERS_T is used instead of SL_WH_MPI_TRIGGERS_T. Since the SL_WH_EVENT_TRIGGERS_T is smaller than SL_WH_MPI_TRIGGERS_T, it means we only clear part of the buffer.
---
Only needed in linux-next.
This is a static analysis patch. Even though I'm pretty sure it's correct, I'm not able to test it.
drivers/scsi/mpt3sas/mpt3sas_ctl.c +1 -1
@@ -3136,7 +3136,7 @@ _ctl_diag_trigger_mpi_store(struct device *cdev,spin_lock_irqsave (&ioc->diag_trigger_lock, flags); sz =min (sizeof (struct SL_WH_MPI_TRIGGERS_T ), count);memset (&ioc->diag_trigger_mpi,0 , -sizeof (struct SL_WH_EVENT_TRIGGERS_T )); +sizeof (struct SL_WH_MPI_TRIGGERS_T ));memcpy (&ioc->diag_trigger_mpi, buf, sz);if (ioc->diag_trigger_mpi.ValidEntries >NUM_VALID_ENTRIES ) ioc->diag_trigger_mpi.ValidEntries =NUM_VALID_ENTRIES ;