Polish INQUIRY command fields validation.

This commit is contained in:
Alexander Motin 2014-09-22 00:40:20 +00:00
parent 211d5708c9
commit 2db9b8b5a0

View File

@ -10723,45 +10723,23 @@ ctl_inquiry(struct ctl_scsiio *ctsio)
struct scsi_inquiry *cdb; struct scsi_inquiry *cdb;
int retval; int retval;
cdb = (struct scsi_inquiry *)ctsio->cdb;
retval = 0;
CTL_DEBUG_PRINT(("ctl_inquiry\n")); CTL_DEBUG_PRINT(("ctl_inquiry\n"));
/* cdb = (struct scsi_inquiry *)ctsio->cdb;
* Right now, we don't support the CmdDt inquiry information. if (cdb->byte2 & SI_EVPD)
* This would be nice to support in the future. When we do retval = ctl_inquiry_evpd(ctsio);
* support it, we should change this test so that it checks to make else if (cdb->page_code == 0)
* sure SI_EVPD and SI_CMDDT aren't both set at the same time. retval = ctl_inquiry_std(ctsio);
*/ else {
#ifdef notyet
if (((cdb->byte2 & SI_EVPD)
&& (cdb->byte2 & SI_CMDDT)))
#endif
if (cdb->byte2 & SI_CMDDT) {
/*
* Point to the SI_CMDDT bit. We might change this
* when we support SI_CMDDT, but since both bits would be
* "wrong", this should probably just stay as-is then.
*/
ctl_set_invalid_field(ctsio, ctl_set_invalid_field(ctsio,
/*sks_valid*/ 1, /*sks_valid*/ 1,
/*command*/ 1, /*command*/ 1,
/*field*/ 1, /*field*/ 2,
/*bit_valid*/ 1, /*bit_valid*/ 0,
/*bit*/ 1); /*bit*/ 0);
ctl_done((union ctl_io *)ctsio); ctl_done((union ctl_io *)ctsio);
return (CTL_RETVAL_COMPLETE); return (CTL_RETVAL_COMPLETE);
} }
if (cdb->byte2 & SI_EVPD)
retval = ctl_inquiry_evpd(ctsio);
#ifdef notyet
else if (cdb->byte2 & SI_CMDDT)
retval = ctl_inquiry_cmddt(ctsio);
#endif
else
retval = ctl_inquiry_std(ctsio);
return (retval); return (retval);
} }