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 | ||
cam_ccb.h | ||
cam_debug.h | ||
cam_extend.c | ||
cam_extend.h | ||
cam_periph.c | ||
cam_periph.h | ||
cam_queue.c | ||
cam_queue.h | ||
cam_sim.c | ||
cam_sim.h | ||
cam_xpt_periph.h | ||
cam_xpt_sim.h | ||
cam_xpt.c | ||
cam_xpt.h | ||
cam.c | ||
cam.h |