summaryrefslogtreecommitdiff
path: root/drivers/usb/dwc3
diff options
context:
space:
mode:
authorZiqi Chen <ziqic@codeaurora.org>2017-08-02 20:21:45 +0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-08-02 05:34:46 -0700
commitd338487c10ff37cb0a7a86e46e498757066e5557 (patch)
treeafd214c3ca2273fe87d579d0d37de64a36cbeb93 /drivers/usb/dwc3
parent560d31410c7a0eaf2eb37d9e0a020563f6524815 (diff)
usb: dwc3: initialize ep0_usb_req.request.dma to avoid crash
It seems possibility that usb_gadget_map_request may not been called during usb cable connected so ep0_usb_req.request.dma is still by default 0 which will pass the if condition in unmapping, hence unmap a request which never been mapped. Initialize ep0_usb_req.request.dma to DMA_ERROR_CODE will avoid this corner case crash. Change-Id: Icf63dc383304c83fe36fb908226240e139a7f9fc Signed-off-by: Ziqi Chen <ziqic@codeaurora.org>
Diffstat (limited to 'drivers/usb/dwc3')
-rw-r--r--drivers/usb/dwc3/ep0.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c
index c2a6fdbfcfee..c244d908fa4f 100644
--- a/drivers/usb/dwc3/ep0.c
+++ b/drivers/usb/dwc3/ep0.c
@@ -439,6 +439,7 @@ static int dwc3_ep0_handle_status(struct dwc3 *dwc,
dwc->ep0_usb_req.request.length = sizeof(*response_pkt);
dwc->ep0_usb_req.request.buf = dwc->setup_buf;
dwc->ep0_usb_req.request.complete = dwc3_ep0_status_cmpl;
+ dwc->ep0_usb_req.request.dma = DMA_ERROR_CODE;
return __dwc3_gadget_ep0_queue(dep, &dwc->ep0_usb_req);
}
@@ -729,6 +730,7 @@ static int dwc3_ep0_set_sel(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl)
dwc->ep0_usb_req.request.length = dep->endpoint.maxpacket;
dwc->ep0_usb_req.request.buf = dwc->setup_buf;
dwc->ep0_usb_req.request.complete = dwc3_ep0_set_sel_cmpl;
+ dwc->ep0_usb_req.request.dma = DMA_ERROR_CODE;
return __dwc3_gadget_ep0_queue(dep, &dwc->ep0_usb_req);
}