aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/ciss
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2010-02-14 12:04:25 +0000
committerAlexander Motin <mav@FreeBSD.org>2010-02-14 12:04:25 +0000
commit6228bcd1ee400d43a1f470d91bb8f9f13ec5d410 (patch)
treec548144a8accadcaf6aa4a0d30cfa216bbe13d8e /sys/dev/ciss
parent9a1be4e8d1e6dd22851ec79b8255f0fa0feec372 (diff)
Notes
Diffstat (limited to 'sys/dev/ciss')
-rw-r--r--sys/dev/ciss/ciss.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/dev/ciss/ciss.c b/sys/dev/ciss/ciss.c
index 2a5b145b8d0f..2455004230e3 100644
--- a/sys/dev/ciss/ciss.c
+++ b/sys/dev/ciss/ciss.c
@@ -3322,10 +3322,15 @@ ciss_cam_complete_fixup(struct ciss_softc *sc, struct ccb_scsiio *csio)
{
struct scsi_inquiry_data *inq;
struct ciss_ldrive *cl;
+ uint8_t *cdb;
int bus, target;
- if (((csio->ccb_h.flags & CAM_CDB_POINTER) ?
- *(u_int8_t *)csio->cdb_io.cdb_ptr : csio->cdb_io.cdb_bytes[0]) == INQUIRY) {
+ cdb = (csio->ccb_h.flags & CAM_CDB_POINTER) ?
+ (uint8_t *)csio->cdb_io.cdb_ptr : csio->cdb_io.cdb_bytes;
+ if (cdb[0] == INQUIRY &&
+ (cdb[1] & SI_EVPD) == 0 &&
+ (csio->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN &&
+ csio->dxfer_len >= SHORT_INQUIRY_LENGTH) {
inq = (struct scsi_inquiry_data *)csio->data_ptr;
target = csio->ccb_h.target_id;