Due to a misplaced parenthesis the usbat_write_block() return value was not stored, but a boolean. USB_STOR_TRANSPORT_NO_SENSE and USB_STOR_TRANSPORT_ERROR were returned as USB_STOR_TRANSPORT_FAILED. Signed-off-by: Roel Kluin <roel.kluin@xxxxxxxxx> --- >> in drivers/usb/storage/transport.h line 100 note the definitions: >> >> #define USB_STOR_TRANSPORT_GOOD 0 /* Transport good, command good */ >> #define USB_STOR_TRANSPORT_FAILED 1 /* Transport good, command failed */ >> #define USB_STOR_TRANSPORT_NO_SENSE 2 /* Command failed, no auto-sense */ >> #define USB_STOR_TRANSPORT_ERROR 3 /* Transport bad (i.e. device dead) */ > It seems pretty clear that your patch was correct and the parens were > misplaced. In usb-storage, transport routines like > usbat_hp8200e_transport() are supposed to return one of the > USB_STOR_TRANSPORT_* codes, not a Boolean value. > > I do agree with Joe that it would be better form to separate the > function call and the "if" into two statements, as in your second > version above. Ok, thanks for comments, This should fix and separate the assignment as desired. Roel diff --git a/drivers/usb/storage/shuttle_usbat.c b/drivers/usb/storage/shuttle_usbat.c index b62a288..bd3f415 100644 --- a/drivers/usb/storage/shuttle_usbat.c +++ b/drivers/usb/storage/shuttle_usbat.c @@ -1628,10 +1628,10 @@ static int usbat_hp8200e_transport(struct scsi_cmnd *srb, struct us_data *us) return USB_STOR_TRANSPORT_ERROR; } - if ( (result = usbat_multiple_write(us, - registers, data, 7)) != USB_STOR_TRANSPORT_GOOD) { + result = usbat_multiple_write(us, registers, data, 7); + + if (result != USB_STOR_TRANSPORT_GOOD) return result; - } /* * Write the 12-byte command header. @@ -1643,12 +1643,11 @@ static int usbat_hp8200e_transport(struct scsi_cmnd *srb, struct us_data *us) * AT SPEED 4 IS UNRELIABLE!!! */ - if ((result = usbat_write_block(us, - USBAT_ATA, srb->cmnd, 12, - (srb->cmnd[0]==GPCMD_BLANK ? 75 : 10), 0) != - USB_STOR_TRANSPORT_GOOD)) { + result = usbat_write_block(us, USBAT_ATA, srb->cmnd, 12, + srb->cmnd[0] == GPCMD_BLANK ? 75 : 10, 0); + + if (result != USB_STOR_TRANSPORT_GOOD) return result; - } /* If there is response data to be read in then do it here. */ -- 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