From: Greg Kroah-Hartman Date: Thu, 9 Jan 2020 15:40:46 +0000 (+0100) Subject: 5.4-stable patches X-Git-Tag: v4.4.209~32 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=49283f1f36a75b468a0de24bc1eaf8475ca32486;p=thirdparty%2Fkernel%2Fstable-queue.git 5.4-stable patches added patches: usb-dummy-hcd-use-usb_urb_dir_in-instead-of-usb_pipein.patch --- diff --git a/queue-5.4/usb-dummy-hcd-use-usb_urb_dir_in-instead-of-usb_pipein.patch b/queue-5.4/usb-dummy-hcd-use-usb_urb_dir_in-instead-of-usb_pipein.patch new file mode 100644 index 00000000000..f505afa2d9e --- /dev/null +++ b/queue-5.4/usb-dummy-hcd-use-usb_urb_dir_in-instead-of-usb_pipein.patch @@ -0,0 +1,62 @@ +From 6dabeb891c001c592645df2f477fed9f5d959987 Mon Sep 17 00:00:00 2001 +From: Andrey Konovalov +Date: Mon, 21 Oct 2019 16:20:59 +0200 +Subject: USB: dummy-hcd: use usb_urb_dir_in instead of usb_pipein + +From: Andrey Konovalov + +commit 6dabeb891c001c592645df2f477fed9f5d959987 upstream. + +Commit fea3409112a9 ("USB: add direction bit to urb->transfer_flags") has +added a usb_urb_dir_in() helper function that can be used to determine +the direction of the URB. With that patch USB_DIR_IN control requests with +wLength == 0 are considered out requests by real USB HCDs. This patch +changes dummy-hcd to use the usb_urb_dir_in() helper to match that +behavior. + +Signed-off-by: Andrey Konovalov +Link: https://lore.kernel.org/r/4ae9e68ebca02f08a93ac61fe065057c9a01f0a8.1571667489.git.andreyknvl@google.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/gadget/udc/dummy_hcd.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/drivers/usb/gadget/udc/dummy_hcd.c ++++ b/drivers/usb/gadget/udc/dummy_hcd.c +@@ -1321,7 +1321,7 @@ static int dummy_perform_transfer(struct + u32 this_sg; + bool next_sg; + +- to_host = usb_pipein(urb->pipe); ++ to_host = usb_urb_dir_in(urb); + rbuf = req->req.buf + req->req.actual; + + if (!urb->num_sgs) { +@@ -1409,7 +1409,7 @@ top: + + /* FIXME update emulated data toggle too */ + +- to_host = usb_pipein(urb->pipe); ++ to_host = usb_urb_dir_in(urb); + if (unlikely(len == 0)) + is_short = 1; + else { +@@ -1830,7 +1830,7 @@ restart: + + /* find the gadget's ep for this request (if configured) */ + address = usb_pipeendpoint (urb->pipe); +- if (usb_pipein(urb->pipe)) ++ if (usb_urb_dir_in(urb)) + address |= USB_DIR_IN; + ep = find_endpoint(dum, address); + if (!ep) { +@@ -2385,7 +2385,7 @@ static inline ssize_t show_urb(char *buf + s = "?"; + break; + } s; }), +- ep, ep ? (usb_pipein(urb->pipe) ? "in" : "out") : "", ++ ep, ep ? (usb_urb_dir_in(urb) ? "in" : "out") : "", + ({ char *s; \ + switch (usb_pipetype(urb->pipe)) { \ + case PIPE_CONTROL: \