]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.0-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 30 Apr 2015 20:56:54 +0000 (22:56 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 30 Apr 2015 20:56:54 +0000 (22:56 +0200)
added patches:
usb-gadget-printer-enqueue-printer-s-response-for-setup-request.patch

queue-4.0/series
queue-4.0/usb-gadget-printer-enqueue-printer-s-response-for-setup-request.patch [new file with mode: 0644]

index dd6e43010d674500f77d3fecb135c0af0aa6f5b2..9f6dac8c3a8d33825e3fb0ec350f4960ed4dcae4 100644 (file)
@@ -23,3 +23,4 @@ btrfs-fix-inode-eviction-infinite-loop-after-cloning-into-it.patch
 btrfs-fix-inode-eviction-infinite-loop-after-extent_same-ioctl.patch
 mm-hugetlb-use-pmd_page-in-follow_huge_pmd.patch
 powerpc-hugetlb-call-mm_dec_nr_pmds-in-hugetlb_free_pmd_range.patch
+usb-gadget-printer-enqueue-printer-s-response-for-setup-request.patch
diff --git a/queue-4.0/usb-gadget-printer-enqueue-printer-s-response-for-setup-request.patch b/queue-4.0/usb-gadget-printer-enqueue-printer-s-response-for-setup-request.patch
new file mode 100644 (file)
index 0000000..cf4dd6e
--- /dev/null
@@ -0,0 +1,48 @@
+From eb132ccbdec5df46e29c9814adf76075ce83576b Mon Sep 17 00:00:00 2001
+From: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
+Date: Tue, 3 Mar 2015 10:52:05 +0100
+Subject: usb: gadget: printer: enqueue printer's response for setup request
+
+From: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
+
+commit eb132ccbdec5df46e29c9814adf76075ce83576b upstream.
+
+Function-specific setup requests should be handled in such a way, that
+apart from filling in the data buffer, the requests are also actually
+enqueued: if function-specific setup is called from composte_setup(),
+the "usb_ep_queue()" block of code in composite_setup() is skipped.
+
+The printer function lacks this part and it results in e.g. get device id
+requests failing: the host expects some response, the device prepares it
+but does not equeue it for sending to the host, so the host finally asserts
+timeout.
+
+This patch adds enqueueing the prepared responses.
+
+Fixes: 2e87edf49227: "usb: gadget: make g_printer use composite"
+Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/gadget/legacy/printer.c |    9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- a/drivers/usb/gadget/legacy/printer.c
++++ b/drivers/usb/gadget/legacy/printer.c
+@@ -1031,6 +1031,15 @@ unknown:
+               break;
+       }
+       /* host either stalls (value < 0) or reports success */
++      if (value >= 0) {
++              req->length = value;
++              req->zero = value < wLength;
++              value = usb_ep_queue(cdev->gadget->ep0, req, GFP_ATOMIC);
++              if (value < 0) {
++                      ERROR(dev, "%s:%d Error!\n", __func__, __LINE__);
++                      req->status = 0;
++              }
++      }
+       return value;
+ }