Skip to contentSkip to conversation

USB: musb-gadget: fix DMA length for OUT transfer

PATCH In review [email protected] 2 participants 2 messages Aug 27, 2010

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 2/2 USB: musb-gadget: fix DMA length for OUT transfer

From: Ming Lei <[email protected]>

DMA length should not go beyond the availabe space of request buffer, so fix it.

Cc Anand Gadiyar <[email protected]>
Cc Mike Frysinger <[email protected]>
Cc Sergei Shtylyov <[email protected]>
---
 drivers/usb/musb/musb_gadget.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)
drivers/usb/musb/musb_gadget.c +3 -2
index c0dfec4..e898228 100644
@@ -662,10 +662,11 @@ static void rxstate(struct musb *musb, struct musb_request *req)
 				if (request->actual < request->length) {
 					int transfer_size = 0;
 #ifdef USE_MODE1
-					transfer_size = min(request->length,
+					transfer_size = min(request->length - request->actual,
 							channel->max_len);
 #else
-					transfer_size = len;
+					transfer_size = min(request->length - request->actual,
+							len);
 #endif
 					if (transfer_size <= musb_ep->packet_sz)
 						musb_ep->dma->desired_mode = 0;
Signature · 1 line
1.6.2.5
Acked-by on v1 2/2
#1 lore raw
Quoted 10 lines · [email protected] wrote:

From: Ming Lei <[email protected]>

DMA length should not go beyond the availabe space of request buffer, so fix it.

Cc Anand Gadiyar <[email protected]>
Cc Mike Frysinger <[email protected]>
Cc Sergei Shtylyov <[email protected]>

There's a small typo in the description.

But for the patch itself,

Quoted 26 lines
---
 drivers/usb/musb/musb_gadget.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)
drivers/usb/musb/musb_gadget.c +3 -2
index c0dfec4..e898228 100644
@@ -662,10 +662,11 @@ static void rxstate(struct musb *musb, struct musb_request *req)
 				if (request->actual < request->length) {
 					int transfer_size = 0;
 #ifdef USE_MODE1
-					transfer_size = min(request->length,
+					transfer_size = min(request->length - request->actual,
 							channel->max_len);
 #else
-					transfer_size = len;
+					transfer_size = min(request->length - request->actual,
+							len);
 #endif
 					if (transfer_size <= musb_ep->packet_sz)
 						musb_ep->dma->desired_mode = 0;
Signature · 1 line
1.6.2.5