From: Greg Kroah-Hartman Date: Thu, 10 May 2012 22:20:49 +0000 (-0700) Subject: 3.3-stable patches X-Git-Tag: v3.3.6~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=87345594bef186668f345ea3125afd55c0decaeb;p=thirdparty%2Fkernel%2Fstable-queue.git 3.3-stable patches added patches: usb-gadget-udc-core-fix-incompatibility-with-dummy-hcd.patch usb-gadget-udc-core-fix-wrong-call-order.patch --- diff --git a/queue-3.3/net-fix-issue-with-netdev_tx_reset_queue-not-resetting-queue-from-xoff-state.patch b/queue-3.3/net-fix-issue-with-netdev_tx_reset_queue-not-resetting-queue-from-xoff-state.patch index d393f37bf79..02279fe48cf 100644 --- a/queue-3.3/net-fix-issue-with-netdev_tx_reset_queue-not-resetting-queue-from-xoff-state.patch +++ b/queue-3.3/net-fix-issue-with-netdev_tx_reset_queue-not-resetting-queue-from-xoff-state.patch @@ -23,29 +23,9 @@ Tested-by: Stephen Ko Signed-off-by: Jeff Kirsher Signed-off-by: Greg Kroah-Hartman --- - drivers/net/ethernet/intel/igb/igb_main.c | 3 ++- - include/linux/netdevice.h | 1 + - 2 files changed, 3 insertions(+), 1 deletion(-) + include/linux/netdevice.h | 1 + + 1 file changed, 1 insertion(+) ---- a/drivers/net/ethernet/intel/igb/igb_main.c -+++ b/drivers/net/ethernet/intel/igb/igb_main.c -@@ -2750,6 +2750,8 @@ void igb_configure_tx_ring(struct igb_ad - - txdctl |= E1000_TXDCTL_QUEUE_ENABLE; - wr32(E1000_TXDCTL(reg_idx), txdctl); -+ -+ netdev_tx_reset_queue(txring_txq(ring)); - } - - /** -@@ -3242,7 +3244,6 @@ static void igb_clean_tx_ring(struct igb - buffer_info = &tx_ring->tx_buffer_info[i]; - igb_unmap_and_free_tx_resource(tx_ring, buffer_info); - } -- netdev_tx_reset_queue(txring_txq(tx_ring)); - - size = sizeof(struct igb_tx_buffer) * tx_ring->count; - memset(tx_ring->tx_buffer_info, 0, size); --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -1955,6 +1955,7 @@ static inline void netdev_completed_queu diff --git a/queue-3.3/series b/queue-3.3/series index 10afa3a2e06..c7040d8895a 100644 --- a/queue-3.3/series +++ b/queue-3.3/series @@ -50,3 +50,5 @@ block-mtip32xx-remove-hotplug_pci_pcie-dependancy.patch nfsd-don-t-fail-unchecked-creates-of-non-special-files.patch arm-7397-1-l2x0-only-apply-workaround-for-erratum-753970.patch arm-7398-1-l2x0-only-write-to-debug-registers-on-pl310.patch +usb-gadget-udc-core-fix-wrong-call-order.patch +usb-gadget-udc-core-fix-incompatibility-with-dummy-hcd.patch diff --git a/queue-3.3/usb-gadget-udc-core-fix-incompatibility-with-dummy-hcd.patch b/queue-3.3/usb-gadget-udc-core-fix-incompatibility-with-dummy-hcd.patch new file mode 100644 index 00000000000..ceec6465e2c --- /dev/null +++ b/queue-3.3/usb-gadget-udc-core-fix-incompatibility-with-dummy-hcd.patch @@ -0,0 +1,46 @@ +From 320cd1e750f1bf3e47eb41209dcb2be07264cb76 Mon Sep 17 00:00:00 2001 +From: Alan Stern +Date: Thu, 26 Apr 2012 11:31:57 -0400 +Subject: usb: gadget: udc-core: fix incompatibility with dummy-hcd + +From: Alan Stern + +commit 320cd1e750f1bf3e47eb41209dcb2be07264cb76 upstream. + +This patch (as1548) fixes a recently-introduced incompatibility +between the UDC core and the dummy-hcd driver. Commit +8ae8090c82eb407267001f75b3d256b3bd4ae691 (usb: gadget: udc-core: fix +asymmetric calls in remove_driver) moved the usb_gadget_udc_stop() +call in usb_gadget_remove_driver() below the usb_gadget_disconnect() +call. + +As a result, usb_gadget_disconnect() gets called at a time when the +gadget driver believes it has been unbound but dummy-hcd believes +it has not. A nasty error ensues when dummy-hcd calls the gadget +driver's disconnect method a second time. + +To fix the problem, this patch moves the gadget driver's unbind +notification after the usb_gadget_disconnect() call. Now nothing +happens between the two unbind notifications, so nothing goes wrong. + +Signed-off-by: Alan Stern +Tested-by: Alexander Shishkin +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/gadget/udc-core.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/usb/gadget/udc-core.c ++++ b/drivers/usb/gadget/udc-core.c +@@ -211,8 +211,8 @@ static void usb_gadget_remove_driver(str + + if (udc_is_newstyle(udc)) { + udc->driver->disconnect(udc->gadget); +- udc->driver->unbind(udc->gadget); + usb_gadget_disconnect(udc->gadget); ++ udc->driver->unbind(udc->gadget); + usb_gadget_udc_stop(udc->gadget, udc->driver); + } else { + usb_gadget_stop(udc->gadget, udc->driver); diff --git a/queue-3.3/usb-gadget-udc-core-fix-wrong-call-order.patch b/queue-3.3/usb-gadget-udc-core-fix-wrong-call-order.patch new file mode 100644 index 00000000000..430548a197d --- /dev/null +++ b/queue-3.3/usb-gadget-udc-core-fix-wrong-call-order.patch @@ -0,0 +1,34 @@ +From 83a787a71e034244a9fd1d5988fe18f226341417 Mon Sep 17 00:00:00 2001 +From: Felipe Balbi +Date: Fri, 27 Apr 2012 11:02:15 +0300 +Subject: usb: gadget: udc-core: fix wrong call order + +From: Felipe Balbi + +commit 83a787a71e034244a9fd1d5988fe18f226341417 upstream. + +commit 6d258a4 (usb: gadget: udc-core: stop UDC on device-initiated +disconnect) introduced another case of asymmetric calls when issuing +a device-initiated disconnect. Fix it. + +Reported-by: Ben Hutchings +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/gadget/udc-core.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/usb/gadget/udc-core.c ++++ b/drivers/usb/gadget/udc-core.c +@@ -363,9 +363,9 @@ static ssize_t usb_udc_softconn_store(st + usb_gadget_udc_start(udc->gadget, udc->driver); + usb_gadget_connect(udc->gadget); + } else if (sysfs_streq(buf, "disconnect")) { ++ usb_gadget_disconnect(udc->gadget); + if (udc_is_newstyle(udc)) + usb_gadget_udc_stop(udc->gadget, udc->driver); +- usb_gadget_disconnect(udc->gadget); + } else { + dev_err(dev, "unsupported command '%s'\n", buf); + return -EINVAL;