Hi,

Your devices crashes or detach after receiving this 6-byte SCSI command:

12 01 00 00 FF 00 00 00 00  10 00 00 00 00 00 00

Which is an INQUIRY command.

#define SC_INQUIRY                      0x12

mav @ CC'ed.

I see there is a dirty byte there. Does the attached patch make any difference to you?

--HPS

00:28:29.351797 usbus6.3 SUBM-BULK-EP=0000000a,SPD=HIGH,NFR=1,SLEN=32,IVAL=0
 frame[0] WRITE 31 bytes
 0000  55 53 42 43 ED 01 00 00  FF 00 00 00 80 00 06 12  |USBC............|
 0010  01 00 00 FF 00 00 00 00  10 00 00 00 00 00 00 --  |............... |
 flags 0 <0>
 status 0xea023 
<OPEN|TRANSFERRING|STARTED|BDMA_ENABLE|BDMA_SETUP|CURR_DMA_SET|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
00:28:29.351885 usbus6.3 
DONE-BULK-EP=0000000a,SPD=HIGH,NFR=1,SLEN=0,IVAL=0,ERR=0
 frame[0] WRITE 31 bytes
 flags 0 <0>
 status 0xca021 
<OPEN|STARTED|BDMA_ENABLE|BDMA_SETUP|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
00:28:29.351892 usbus6.3 SUBM-BULK-EP=0000008b,SPD=HIGH,NFR=1,SLEN=0,IVAL=0
 frame[0] READ 255 bytes
 flags 0x32 <SHORT_XFER_OK|PROXY_BUFFER|EXT_BUFFER|0>
 status 0xeb023 
<OPEN|TRANSFERRING|STARTED|SHORT_XFER_OK|BDMA_ENABLE|BDMA_SETUP|CURR_DMA_SET|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
00:28:29.452035 usbus6.3 
DONE-BULK-EP=0000008b,SPD=HIGH,NFR=1,SLEN=0,IVAL=0,ERR=STALLED
 frame[0] READ 0 bytes
 flags 0x32 <SHORT_XFER_OK|PROXY_BUFFER|EXT_BUFFER|0>
 status 0xcb021 
<OPEN|STARTED|SHORT_XFER_OK|BDMA_ENABLE|BDMA_SETUP|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
00:28:29.452055 usbus6.3 SUBM-CTRL-EP=00000000,SPD=HIGH,NFR=1,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  02 01 00 00 8B 00 00 00  -- -- -- -- -- -- -- --  |........        |
 flags 0 <0>
 status 0xea1a3 
<OPEN|TRANSFERRING|STARTED|CONTROL_XFR|CONTROL_HDR|BDMA_ENABLE|BDMA_SETUP|CURR_DMA_SET|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
00:28:29.452128 usbus6.3 
DONE-CTRL-EP=00000000,SPD=HIGH,NFR=1,SLEN=0,IVAL=0,ERR=STALLED
 frame[0] WRITE 0 bytes
 flags 0 <0>
 status 0xca1a1 
<OPEN|STARTED|CONTROL_XFR|CONTROL_HDR|BDMA_ENABLE|BDMA_SETUP|CAN_CANCEL_IMMED|DOING_CALLBACK|0>

=== sys/dev/usb/storage/umass.c
==================================================================
--- sys/dev/usb/storage/umass.c	(revision 255360)
+++ sys/dev/usb/storage/umass.c	(local)
@@ -1321,10 +1321,12 @@
 			}
 			sc->cbw.bCDBLength = sc->sc_transfer.cmd_len;
 
+			/* copy SCSI command data */
 			memcpy(sc->cbw.CBWCDB, sc->sc_transfer.cmd_data,
 			    sc->sc_transfer.cmd_len);
 
-			memset(sc->sc_transfer.cmd_data +
+			/* clear remaining command area */
+			memset(sc->cbw.CBWCDB +
 			    sc->sc_transfer.cmd_len, 0,
 			    sizeof(sc->cbw.CBWCDB) -
 			    sc->sc_transfer.cmd_len);
_______________________________________________
freebsd-usb@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"

Reply via email to