[SCSI] megaraid_{mm,mbox}: a fix on INQUIRY with EVPD
With this patch, driver will protect data corruption created by INQUIRY with EVPD request to megaraid controllers. As specified in the changelog, megaraid F/W already has fixed the issue and being under process of release. Meanwhile, driver will protect the system with this patch. Signed-Off By: Seokmann Ju <seokmann.ju@lsil.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
fbf6080225
commit
aa677bc744
|
@ -59,6 +59,13 @@ Older Version : 2.20.4.8 (scsi module), 2.20.2.6 (cmm module)
|
||||||
> Buffer I/O error on device sda6, logical block 522067228
|
> Buffer I/O error on device sda6, logical block 522067228
|
||||||
> attempt to access beyond end of device
|
> attempt to access beyond end of device
|
||||||
|
|
||||||
|
2. When INQUIRY with EVPD bit set issued to the MegaRAID controller,
|
||||||
|
system memory gets corrupted.
|
||||||
|
Root Cause: MegaRAID F/W handle the INQUIRY with EVPD bit set
|
||||||
|
incorrectly.
|
||||||
|
Fix: MegaRAID F/W has fixed the problem and being process of release,
|
||||||
|
soon. Meanwhile, driver will filter out the request.
|
||||||
|
|
||||||
Release Date : Mon Apr 11 12:27:22 EST 2006 - Seokmann Ju <sju@lsil.com>
|
Release Date : Mon Apr 11 12:27:22 EST 2006 - Seokmann Ju <sju@lsil.com>
|
||||||
Current Version : 2.20.4.8 (scsi module), 2.20.2.6 (cmm module)
|
Current Version : 2.20.4.8 (scsi module), 2.20.2.6 (cmm module)
|
||||||
Older Version : 2.20.4.7 (scsi module), 2.20.2.6 (cmm module)
|
Older Version : 2.20.4.7 (scsi module), 2.20.2.6 (cmm module)
|
||||||
|
|
|
@ -40,6 +40,9 @@
|
||||||
#define HBA_SIGNATURE_64_BIT 0x299
|
#define HBA_SIGNATURE_64_BIT 0x299
|
||||||
#define PCI_CONF_AMISIG64 0xa4
|
#define PCI_CONF_AMISIG64 0xa4
|
||||||
|
|
||||||
|
#define MEGA_SCSI_INQ_EVPD 1
|
||||||
|
#define MEGA_INVALID_FIELD_IN_CDB 0x24
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* scb_t - scsi command control block
|
* scb_t - scsi command control block
|
||||||
|
|
|
@ -1644,6 +1644,14 @@ megaraid_mbox_build_cmd(adapter_t *adapter, struct scsi_cmnd *scp, int *busy)
|
||||||
rdev->last_disp |= (1L << SCP2CHANNEL(scp));
|
rdev->last_disp |= (1L << SCP2CHANNEL(scp));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (scp->cmnd[1] & MEGA_SCSI_INQ_EVPD) {
|
||||||
|
scp->sense_buffer[0] = 0x70;
|
||||||
|
scp->sense_buffer[2] = ILLEGAL_REQUEST;
|
||||||
|
scp->sense_buffer[12] = MEGA_INVALID_FIELD_IN_CDB;
|
||||||
|
scp->result = CHECK_CONDITION << 1;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* Fall through */
|
/* Fall through */
|
||||||
|
|
||||||
case READ_CAPACITY:
|
case READ_CAPACITY:
|
||||||
|
|
Reference in New Issue