955f7e7474
256 bytes) caused it to break on many devices. The SCSI spec says that for commands with 8-bit length fields, a value of 0 means 256 bytes. As it turns out, many devices don't deal with that properly. Some interpret the 0 as 0, and return no data. Others return more than 256 bytes of data, and cause an overrun. The fix is to tell the device we've only allocated SHORT_INQUIRY_LENGTH (36 bytes) of inquiry data, instead of sizeof(struct scsi_inquiry_data). camcontrol.c: Change inq_len in the call to scsi_inquiry() to SHORT_INQUIRY_LENGTH, and add a long comment explaining the reason for the change. scsi_all.h: Add a comment above the definitinon of SHORT_INQUIRY_LENGTH alerting people that it is both the initial probe inquiry length, and the minimum amount of data needed for scsi_print_inquiry() to function. scsi_all.c: Add a comment about SHORT_INQUIRY_LENGTH being the minimum amount of data needed for scsi_print_inquiry() to function. Reviewed by: gibbs Approved by: jkh Reported by: "John W. DeBoskey" <jwd@unx.sas.com> |
||
---|---|---|
.. | ||
scsi_all.c | ||
scsi_all.h | ||
scsi_cd.c | ||
scsi_cd.h | ||
scsi_ch.c | ||
scsi_ch.h | ||
scsi_da.c | ||
scsi_da.h | ||
scsi_message.h | ||
scsi_pass.c | ||
scsi_pass.h | ||
scsi_pt.c | ||
scsi_pt.h | ||
scsi_sa.c | ||
scsi_sa.h | ||
scsi_ses.c | ||
scsi_ses.h | ||
scsi_targ_bh.c | ||
scsi_target.c | ||
scsi_targetio.h |