On Thu, 31 Jan 2008 11:27:39 +0200
Boaz Harrosh <[EMAIL PROTECTED]> wrote:

> Please check the below patch.
> 
> one thing that I can see is that the isd200 does an INQUARY transfer
> of sizeof(struct inquiry_data) which is 96 bytes, when scsi_scan.c
> sends an INQUARY with 36 bytes buffer. So we have an underflow in 
> usb_stor_access_xfer_buf().
> 
> The below patch will only check my theory. I will send a proper fix
> later, please confirm that this fixes it.
> 
> What kills me is that this condition has existed before my patch, I'll
> try to see why it is triggered now

I applied this patch to 2.6.24, and it now works for me.  It was
crashing consistently whenever I'd plug this device in, now it goes
through successfully:


[24775.788039] usb 3-2: new full speed USB device using uhci_hcd and address 3
[24775.939275] usb 3-2: configuration #1 chosen from 1 choice
[24776.084409] usbcore: registered new interface driver libusual
[24776.103604] Initializing USB Mass Storage driver...
[24776.213916] scsi3 : SCSI emulation for USB Mass Storage devices
[24776.214366] usbcore: registered new interface driver usb-storage
[24776.214377] USB Mass Storage support registered.
[24776.215604] usb-storage: device found at 3
[24776.215724] usb-storage: waiting for device to settle before scanning
[24778.333378] scsi 3:0:0:0: Direct-Access     SAMSUNG  HM120JC          YL10 
PQ: 0 ANSI: 0
[24778.333715] sd 3:0:0:0: [sdb] 234441648 512-byte hardware sectors (120034 MB)
[24778.333841] sd 3:0:0:0: [sdb] Write Protect is off
[24778.333848] sd 3:0:0:0: [sdb] Mode Sense: 00 00 00 00
[24778.333853] sd 3:0:0:0: [sdb] Assuming drive cache: write through
[24778.334196] sd 3:0:0:0: [sdb] 234441648 512-byte hardware sectors (120034 MB)
[24778.334396] sd 3:0:0:0: [sdb] Write Protect is off
[24778.334403] sd 3:0:0:0: [sdb] Mode Sense: 00 00 00 00
[24778.334408] sd 3:0:0:0: [sdb] Assuming drive cache: write through
[24778.334414]  sdb: sdb1
[24778.824103] sd 3:0:0:0: [sdb] Attached SCSI disk
[24778.824210] sd 3:0:0:0: Attached scsi generic sg1 type 0
[24778.825119] usb-storage: device scan complete


I'm happy to test further patches.  Let me know if you need more
testing.

Do you still want me to try out the scsi-misc branch?

Mark


> 
> ---
>  drivers/usb/storage/protocol.c |    6 ++++++
>  1 files changed, 6 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/usb/storage/protocol.c
> b/drivers/usb/storage/protocol.c index a41ce21..d0ff1f6 100644
> --- a/drivers/usb/storage/protocol.c
> +++ b/drivers/usb/storage/protocol.c
> @@ -229,6 +229,12 @@ void usb_stor_set_xfer_buf(unsigned char *buffer,
>       unsigned int offset = 0;
>       struct scatterlist *sg = NULL;
>  
> +     BUG_ON(!scsi_sglist(srb));
> +
> +     if(buflen > scsi_bufflen(srb))
> +             buflen = scsi_bufflen(srb);
> +             /*FIXME: should we set an underflow condition here*/
> +
>       usb_stor_access_xfer_buf(buffer, buflen, srb, &sg, &offset,
>                       TO_XFER_BUF);
>       if (buflen < scsi_bufflen(srb))
> 
-
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to