Re: [PATCH v8 15/33] scsi: spi: Fix sshdr use

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 6/14/23 00:17, Mike Christie wrote:
If scsi_execute_cmd returns < 0 it will not have set the sshdr, so we
can't access it.

Signed-off-by: Mike Christie <michael.christie@xxxxxxxxxx>
---
  drivers/scsi/scsi_transport_spi.c | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/scsi_transport_spi.c b/drivers/scsi/scsi_transport_spi.c
index 2442d4d2e3f3..2100c3adb456 100644
--- a/drivers/scsi/scsi_transport_spi.c
+++ b/drivers/scsi/scsi_transport_spi.c
@@ -126,7 +126,7 @@ static int spi_execute(struct scsi_device *sdev, const void *cmd,
  		 */
  		result = scsi_execute_cmd(sdev, cmd, opf, buffer, bufflen,
  					  DV_TIMEOUT, 1, &exec_args);
-		if (result < 0 || !scsi_sense_valid(sshdr) ||
+		if (result <= 0 || !scsi_sense_valid(sshdr) ||
  		    sshdr->sense_key != UNIT_ATTENTION)
  			break;
  	}

Hmm ... why is this change necessary? If result == 0 and args->sshdr != 0 then scsi_execute() has called scsi_normalize_sense(). The first function call in scsi_normalize_sense() is memset(sshdr, 0, sizeof(struct scsi_sense_hdr)). Does this mean that it is safe to access the contents of sshdr if scsi_execute_cmd() returns 0?

Thanks,

Bart.



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux