Re: [BUG] 2.6.24-git usb reset problems

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Greg KH <greg@...>, Jens Axboe <jens.axboe@...>, Matthew Dharm <mdharm-usb@...>
Cc: <linux-kernel@...>, <linux-usb@...>, <linux-scsi@...>
Date: Tuesday, January 29, 2008 - 8:15 am

Greg KH wrote:
Yes it is ;)

Jens could you test the patch below? if it works I'll submit a proper
patch. Please forgive me for the bug.

Matthew, Greg, Is there a way to extract from messages the usb storage transport
used? I'm guessing it is freecom do to the fact that I find a bug there.

Thanks
Boaz

---
 drivers/usb/storage/freecom.c   |    4 ++--
 drivers/usb/storage/transport.c |   12 +++++++++---
 drivers/usb/storage/transport.h |    3 ++-
 3 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/drivers/usb/storage/freecom.c b/drivers/usb/storage/freecom.c
index f5a4e8d..8d77603 100644
--- a/drivers/usb/storage/freecom.c
+++ b/drivers/usb/storage/freecom.c
@@ -132,7 +132,7 @@ freecom_readdata (struct scsi_cmnd *srb, struct us_data *us,
 
 	/* Now transfer all of our blocks. */
 	US_DEBUGP("Start of read\n");
-	result = usb_stor_bulk_srb(us, ipipe, srb);
+	result = usb_stor_bulk_srb_length(us, ipipe, srb, count);
 	US_DEBUGP("freecom_readdata done!\n");
 
 	if (result > USB_STOR_XFER_SHORT)
@@ -165,7 +165,7 @@ freecom_writedata (struct scsi_cmnd *srb, struct us_data *us,
 
 	/* Now transfer all of our blocks. */
 	US_DEBUGP("Start of write\n");
-	result = usb_stor_bulk_srb(us, opipe, srb);
+	result = usb_stor_bulk_srb_length(us, opipe, srb, count);
 
 	US_DEBUGP("freecom_writedata done!\n");
 	if (result > USB_STOR_XFER_SHORT)
diff --git a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c
index d9f4912..5072235 100644
--- a/drivers/usb/storage/transport.c
+++ b/drivers/usb/storage/transport.c
@@ -462,18 +462,24 @@ static int usb_stor_bulk_transfer_sglist(struct us_data *us, unsigned int pipe,
  * Common used function. Transfer a complete command
  * via usb_stor_bulk_transfer_sglist() above. Set cmnd resid
  */
-int usb_stor_bulk_srb(struct us_data* us, unsigned int pipe,
-		      struct scsi_cmnd* srb)
+int usb_stor_bulk_srb_length(struct us_data* us, unsigned int pipe,
+		      struct scsi_cmnd* srb, unsigned length)
 {
 	unsigned int partial;
 	int result = usb_stor_bulk_transfer_sglist(us, pipe, scsi_sglist(srb),
-				      scsi_sg_count(srb), scsi_bufflen(srb),
+				      scsi_sg_count(srb), length,
 				      &partial);
 
 	scsi_set_resid(srb, scsi_bufflen(srb) - partial);
 	return result;
 }
 
+int usb_stor_bulk_srb(struct us_data* us, unsigned int pipe,
+		struct scsi_cmnd* srb)
+{
+	return usb_stor_bulk_srb_length(us, pipe, srb, scsi_bufflen(srb));
+}
+
 /*
  * Transfer an entire SCSI command's worth of data payload over the bulk
  * pipe.
diff --git a/drivers/usb/storage/transport.h b/drivers/usb/storage/transport.h
index ada7c2f..03e395d 100644
--- a/drivers/usb/storage/transport.h
+++ b/drivers/usb/storage/transport.h
@@ -139,8 +139,9 @@ extern int usb_stor_bulk_transfer_buf(struct us_data *us, unsigned int pipe,
 		void *buf, unsigned int length, unsigned int *act_len);
 extern int usb_stor_bulk_transfer_sg(struct us_data *us, unsigned int pipe,
 		void *buf, unsigned int length, int use_sg, int *residual);
+extern int usb_stor_bulk_srb_length(struct us_data* us, unsigned int pipe,
+		struct scsi_cmnd* srb, unsigned length);
 extern int usb_stor_bulk_srb(struct us_data* us, unsigned int pipe,
 		struct scsi_cmnd* srb);
-
 extern int usb_stor_port_reset(struct us_data *us);
 #endif

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[BUG] 2.6.24-git usb reset problems, Jens Axboe, (Mon Jan 28, 4:49 pm)
Re: [BUG] 2.6.24-git usb reset problems, Greg KH, (Mon Jan 28, 5:21 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 8:15 am)
Re: [BUG] 2.6.24-git usb reset problems, Matthew Dharm, (Tue Jan 29, 11:00 am)
Re: [BUG] 2.6.24-git usb reset problems, Alan Stern, (Tue Jan 29, 11:36 am)
Re: [BUG] 2.6.24-git usb reset problems, James Bottomley, (Tue Jan 29, 12:34 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 2:27 pm)
Re: [BUG] 2.6.24-git usb reset problems, James Bottomley, (Tue Jan 29, 2:48 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 2:58 pm)
Re: [BUG] 2.6.24-git usb reset problems, James Bottomley, (Tue Jan 29, 3:17 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 3:28 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 11:54 am)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 9:54 am)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 10:06 am)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 10:13 am)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 10:11 am)
Re: [BUG] 2.6.24-git usb reset problems, Oliver Neukum, (Tue Jan 29, 10:31 am)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 11:50 am)
Re: [BUG] 2.6.24-git usb reset problems, Oliver Neukum, (Tue Jan 29, 1:42 pm)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 10:31 am)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 2:39 pm)
Re: [BUG] 2.6.24-git usb reset problems, Matthew Dharm, (Tue Jan 29, 3:10 pm)
Re: [BUG] 2.6.24-git usb reset problems, James Bottomley, (Tue Jan 29, 3:33 pm)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 3:35 pm)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 3:45 pm)
Re: [BUG] 2.6.24-git usb reset problems, Geert Uytterhoeven, (Wed Jan 30, 6:27 am)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Wed Jan 30, 6:38 am)
Re: [BUG] 2.6.24-git usb reset problems, James Bottomley, (Wed Jan 30, 10:38 am)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Wed Jan 30, 2:06 pm)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Wed Jan 30, 3:07 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 3:58 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 4:09 pm)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 4:13 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 4:26 pm)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 4:03 pm)
Re: [BUG] 2.6.24-git usb reset problems, James Bottomley, (Tue Jan 29, 4:04 pm)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 4:06 pm)
Re: [BUG] 2.6.24-git usb reset problems, James Bottomley, (Tue Jan 29, 4:24 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 4:53 pm)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 3:15 pm)
Re: [BUG] 2.6.24-git usb reset problems, Matthew Dharm, (Tue Jan 29, 3:37 pm)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 3:26 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 3:09 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 10:14 am)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 3:48 am)