patch "usb: gadget: udc: fsl: Add missing complete function." added to usb-next
Subsystems (3)
This is a note to let you know that I've just added the patch titled
usb: gadget: udc: fsl: Add missing complete function.
to my usb git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git
in the usb-next branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will also be merged in the next major kernel release during the merge window.
If you have any questions about this process, please let me know.
Quoted 1 line
From
5528954a1a0c49c6974ef1b8d6eaceff536204d5Mon Sep 17 00:00:00 2001
From: Magnus Lilja <[email protected]>
Date: Wed, 25 Jan 2017 22:07:59 +0100
Subject: usb: gadget: udc: fsl: Add missing complete function.
Commit 304f7e5e1d08 ("usb: gadget: Refactor request completion") removed check if req->req.complete is non-NULL, resulting in a NULL pointer derefence and a kernel panic.
This patch adds an empty complete function instead of re-introducing the req->req.complete check.
--- drivers/usb/gadget/udc/fsl_udc_core.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
drivers/usb/gadget/udc/fsl_udc_core.c +8 -2
@@ -1248,6 +1248,12 @@ static const struct usb_gadget_ops fsl_gadget_ops = { .udc_stop = fsl_udc_stop, }; +/* +* Empty complete function used by this driver to fill in the req->complete +* field when creating a request since the complete field is mandatory. +*/ +static void fsl_noop_complete (struct usb_ep *ep,struct usb_request *req) { } +/* Set protocol stall on ep0, protocol stall will automatically be cleared on new transaction */ static void ep0stall (struct fsl_udc *udc)
@@ -1282,7 +1288,7 @@ static int ep0_prime_status(struct fsl_udc *udc, int direction) req->req.length =0 ; req->req.status = -EINPROGRESS ; req->req.actual =0 ; - req->req.complete =NULL ; + req->req.complete = fsl_noop_complete; req->dtd_count =0 ; ret =usb_gadget_map_request (&ep->udc->gadget, &req->req,ep_is_in (ep));
@@ -1365,7 +1371,7 @@ static void ch9getstatus(struct fsl_udc *udc, u8 request_type, u16 value, req->req.length =2 ; req->req.status = -EINPROGRESS ; req->req.actual =0 ; - req->req.complete =NULL ; + req->req.complete = fsl_noop_complete; req->dtd_count =0 ; ret =usb_gadget_map_request (&ep->udc->gadget, &req->req,ep_is_in (ep));
Signature · 1 line
2.11.0