On Wed, Sep 12, 2007 at 02:55:19AM +0300, Boaz Harrosh wrote: > - if (SCpnt->request_bufflen != len) > + if (scsi_bufflen(SCpnt) != len) { > + WARN_ON(1); NAK. The call trace generally doesn't provide any additional information on the cause of the error. > printk(KERN_WARNING "scsi%d.%c: bad request buffer " > "length %d, should be %ld\n", SCpnt->device->host->host_no, > - '0' + SCpnt->device->id, SCpnt->request_bufflen, len); > - SCpnt->request_bufflen = len; > + '0' + SCpnt->device->id, scsi_bufflen(SCpnt), len); > + } > #endif > } else { > - SCpnt->SCp.ptr = (unsigned char *)SCpnt->request_buffer; > - SCpnt->SCp.this_residual = SCpnt->request_bufflen; > - SCpnt->SCp.phase = SCpnt->request_bufflen; > - } > - > - /* > - * If the upper SCSI layers pass a buffer, but zero length, > - * we aren't interested in the buffer pointer. > - */ > - if (SCpnt->SCp.this_residual == 0 && SCpnt->SCp.ptr) { > -#if 0 //def BELT_AND_BRACES > - printk(KERN_WARNING "scsi%d.%c: zero length buffer passed for " > - "command ", SCpnt->host->host_no, '0' + SCpnt->target); > - __scsi_print_command(SCpnt->cmnd); > -#endif > SCpnt->SCp.ptr = NULL; > + SCpnt->SCp.this_residual = 0; > + SCpnt->SCp.phase = 0; > } > } Also NAK. This was added due to bad behaviour of the SCSI layer and was found to be necessary. -- Russell King Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/ maintainer of: - To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html