diff options
| author | Alexander Motin <mav@FreeBSD.org> | 2010-02-14 12:04:25 +0000 |
|---|---|---|
| committer | Alexander Motin <mav@FreeBSD.org> | 2010-02-14 12:04:25 +0000 |
| commit | 6228bcd1ee400d43a1f470d91bb8f9f13ec5d410 (patch) | |
| tree | c548144a8accadcaf6aa4a0d30cfa216bbe13d8e /sys/dev/ciss | |
| parent | 9a1be4e8d1e6dd22851ec79b8255f0fa0feec372 (diff) | |
Notes
Diffstat (limited to 'sys/dev/ciss')
| -rw-r--r-- | sys/dev/ciss/ciss.c | 9 |
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; |
