[SCSI] mpt2sas : fix oops when firmware sends large sense buffer size
authorEric Moore <eric.moore@lsi.com>
Tue, 21 Apr 2009 21:38:43 +0000 (15:38 -0600)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Mon, 27 Apr 2009 15:53:56 +0000 (10:53 -0500)
There is a bug in firmware where the reply message frame says there is a
16kb sense buffer, when in reality its only 20 bytes.  This fix insures
the memcpy action doesn't corrupte the memory beyond the 90 bytes allocated in
the scsi command for sense buffer.

Signed-off-by: Eric Moore <eric.moore@lsi.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/scsi/mpt2sas/mpt2sas_scsih.c

index 0c463c483c025f738c846f33b9b3747ddf3a0291..f2d967c5415e6f8b4060bb1844f13442736072f1 100644 (file)
@@ -2863,8 +2863,9 @@ scsih_io_done(struct MPT2SAS_ADAPTER *ioc, u16 smid, u8 VF_ID, u32 reply)
                struct sense_info data;
                const void *sense_data = mpt2sas_base_get_sense_buffer(ioc,
                    smid);
-               memcpy(scmd->sense_buffer, sense_data,
+               u32 sz = min_t(u32, SCSI_SENSE_BUFFERSIZE,
                    le32_to_cpu(mpi_reply->SenseCount));
+               memcpy(scmd->sense_buffer, sense_data, sz);
                _scsih_normalize_sense(scmd->sense_buffer, &data);
                /* failure prediction threshold exceeded */
                if (data.asc == 0x5D)
This page took 0.030393 seconds and 5 git commands to generate.