forked from Minki/linux
usb-storage: update earlier scatter-gather bug fix
This patch (as1037) makes a small update to the earlier as1035 patch. The minimum-length computation shouldn't be done in usb_stor_access_xfer_buf(), since that routine can be called multiple times for a single transfer. It should be done in usb_stor_set_xfer_buf() instead, which gets called only once. The way it is now isn't really _wrong_, but it isn't really _right_ either. Moving the statement will be an improvement. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
0ed930bffa
commit
6d512a80c2
@ -170,7 +170,6 @@ unsigned int usb_stor_access_xfer_buf(unsigned char *buffer,
|
|||||||
|
|
||||||
if (!sg)
|
if (!sg)
|
||||||
sg = scsi_sglist(srb);
|
sg = scsi_sglist(srb);
|
||||||
buflen = min(buflen, scsi_bufflen(srb));
|
|
||||||
|
|
||||||
/* This loop handles a single s-g list entry, which may
|
/* This loop handles a single s-g list entry, which may
|
||||||
* include multiple pages. Find the initial page structure
|
* include multiple pages. Find the initial page structure
|
||||||
@ -232,6 +231,7 @@ void usb_stor_set_xfer_buf(unsigned char *buffer,
|
|||||||
unsigned int offset = 0;
|
unsigned int offset = 0;
|
||||||
struct scatterlist *sg = NULL;
|
struct scatterlist *sg = NULL;
|
||||||
|
|
||||||
|
buflen = min(buflen, scsi_bufflen(srb));
|
||||||
buflen = usb_stor_access_xfer_buf(buffer, buflen, srb, &sg, &offset,
|
buflen = usb_stor_access_xfer_buf(buffer, buflen, srb, &sg, &offset,
|
||||||
TO_XFER_BUF);
|
TO_XFER_BUF);
|
||||||
if (buflen < scsi_bufflen(srb))
|
if (buflen < scsi_bufflen(srb))
|
||||||
|
Loading…
Reference in New Issue
Block a user