On Thu, 11 Mar 2010, Oliver Neukum wrote: > Mar 11 00:06:38 vanamonde kernel: usb-storage: Issuing auto-REQUEST_SENSE > Mar 11 00:06:38 vanamonde kernel: usb_stor_invoke_transport - sglist ffff8801370d5dc8 sense buffer ffff880135c242c0 sense sgl ffff8801370d5dc8 sg_virt ffff880135c242c0 page link ffffea00043c27e2 dmaaddr (null) > Mar 11 00:06:38 vanamonde kernel: usb-storage: Bulk Command S 0x43425355 T 0x9c L 18 F 128 Trg 0 LUN 0 CL 6 > Mar 11 00:06:38 vanamonde kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes > Mar 11 00:06:38 vanamonde kernel: mon_text_get_data: num_sgs == 0: src ffff880037816000 > Mar 11 00:06:38 vanamonde kernel: usb-storage: Status code 0; transferred 31/31 > Mar 11 00:06:38 vanamonde kernel: usb-storage: -- transfer complete > Mar 11 00:06:38 vanamonde kernel: usb-storage: Bulk command transfer result=0 > Mar 11 00:06:38 vanamonde kernel: usb-storage: usb_stor_bulk_transfer_sglist: xfer 18 bytes, 1 entries > Mar 11 00:06:38 vanamonde kernel: mon_text_get_data: num_sgs == 1: src ffff880135c242c0, length 18, scatterlist at ffff8801370d5dc8, page ffffea00043c27e0 > Mar 11 00:06:38 vanamonde kernel: usb-storage: Status code 0; transferred 18/18 > Mar 11 00:06:38 vanamonde kernel: usb-storage: -- transfer complete That looks a lot better. The values agree where they should and nothing has changed unexpectedly. In fact, the final value value of src is equal to the initial value of srb->sense_buffer. Hence the memcpy() in mon_text_get_data() _should_ be seeing exactly the same values as the US_DEBUGP() in invoke_transport(). I guess the next step is to add a new printk at the end of mon_text_get_data(): if (len == 18) printk(KERN_INFO "data %x %x %x %x\n", src[0], src[2] & 0xf, src[12], src[13]); This will also tell us if len is somehow getting changed. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html