summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2011-08-29 15:18:18 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2011-08-29 15:18:18 -0700
commit00ecbd900d223944a4e87ce5e2368e984a229518 (patch)
tree5b92bdd81d66faa1e548f82e75342a4d93e12096
parent54c7bbe73a677475bb9356f06f14fb74141dd16f (diff)
downloadlongterm-queue-2.6.32-00ecbd900d223944a4e87ce5e2368e984a229518.tar.gz
.32 patches
-rw-r--r--queue-2.6.32/rt2x00-do-not-drop-usb-dev-reference-counter-on-suspend.patch80
-rw-r--r--queue-2.6.32/series1
2 files changed, 81 insertions, 0 deletions
diff --git a/queue-2.6.32/rt2x00-do-not-drop-usb-dev-reference-counter-on-suspend.patch b/queue-2.6.32/rt2x00-do-not-drop-usb-dev-reference-counter-on-suspend.patch
new file mode 100644
index 0000000..308fc97
--- /dev/null
+++ b/queue-2.6.32/rt2x00-do-not-drop-usb-dev-reference-counter-on-suspend.patch
@@ -0,0 +1,80 @@
+From 543cc38c8fe86deba4169977c61eb88491036837 Mon Sep 17 00:00:00 2001
+From: Stanislaw Gruszka <sgruszka@redhat.com>
+Date: Fri, 12 Aug 2011 14:02:04 +0200
+Subject: rt2x00: do not drop usb dev reference counter on suspend
+
+From: Stanislaw Gruszka <sgruszka@redhat.com>
+
+commit 543cc38c8fe86deba4169977c61eb88491036837 upstream.
+
+When hibernating ->resume may not be called by usb core, but disconnect
+and probe instead, so we do not increase the counter after decreasing
+it in ->supend. As a result we free memory early, and get crash when
+unplugging usb dongle.
+
+BUG: unable to handle kernel paging request at 6b6b6b9f
+IP: [<c06909b0>] driver_sysfs_remove+0x10/0x30
+*pdpt = 0000000034f21001 *pde = 0000000000000000
+Pid: 20, comm: khubd Not tainted 3.1.0-rc1-wl+ #20 LENOVO 6369CTO/6369CTO
+EIP: 0060:[<c06909b0>] EFLAGS: 00010202 CPU: 1
+EIP is at driver_sysfs_remove+0x10/0x30
+EAX: 6b6b6b6b EBX: f52bba34 ECX: 00000000 EDX: 6b6b6b6b
+ESI: 6b6b6b6b EDI: c0a0ea20 EBP: f61c9e68 ESP: f61c9e64
+ DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
+Process khubd (pid: 20, ti=f61c8000 task=f6138270 task.ti=f61c8000)
+Call Trace:
+ [<c06909ef>] __device_release_driver+0x1f/0xa0
+ [<c0690b20>] device_release_driver+0x20/0x40
+ [<c068fd64>] bus_remove_device+0x84/0xe0
+ [<c068e12a>] ? device_remove_attrs+0x2a/0x80
+ [<c068e267>] device_del+0xe7/0x170
+ [<c06d93d4>] usb_disconnect+0xd4/0x180
+ [<c06d9d61>] hub_thread+0x691/0x1600
+ [<c0473260>] ? wake_up_bit+0x30/0x30
+ [<c0442a39>] ? complete+0x49/0x60
+ [<c06d96d0>] ? hub_disconnect+0xd0/0xd0
+ [<c06d96d0>] ? hub_disconnect+0xd0/0xd0
+ [<c0472eb4>] kthread+0x74/0x80
+ [<c0472e40>] ? kthread_worker_fn+0x150/0x150
+ [<c0809b3e>] kernel_thread_helper+0x6/0x10
+
+Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
+Acked-by: Ivo van Doorn <IvDoorn@gmail.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/rt2x00/rt2x00usb.c | 14 +-------------
+ 1 file changed, 1 insertion(+), 13 deletions(-)
+
+--- a/drivers/net/wireless/rt2x00/rt2x00usb.c
++++ b/drivers/net/wireless/rt2x00/rt2x00usb.c
+@@ -703,18 +703,8 @@ int rt2x00usb_suspend(struct usb_interfa
+ {
+ struct ieee80211_hw *hw = usb_get_intfdata(usb_intf);
+ struct rt2x00_dev *rt2x00dev = hw->priv;
+- int retval;
+
+- retval = rt2x00lib_suspend(rt2x00dev, state);
+- if (retval)
+- return retval;
+-
+- /*
+- * Decrease usbdev refcount.
+- */
+- usb_put_dev(interface_to_usbdev(usb_intf));
+-
+- return 0;
++ return rt2x00lib_suspend(rt2x00dev, state);
+ }
+ EXPORT_SYMBOL_GPL(rt2x00usb_suspend);
+
+@@ -723,8 +713,6 @@ int rt2x00usb_resume(struct usb_interfac
+ struct ieee80211_hw *hw = usb_get_intfdata(usb_intf);
+ struct rt2x00_dev *rt2x00dev = hw->priv;
+
+- usb_get_dev(interface_to_usbdev(usb_intf));
+-
+ return rt2x00lib_resume(rt2x00dev);
+ }
+ EXPORT_SYMBOL_GPL(rt2x00usb_resume);
diff --git a/queue-2.6.32/series b/queue-2.6.32/series
index 8fdc5aa..c564503 100644
--- a/queue-2.6.32/series
+++ b/queue-2.6.32/series
@@ -1,2 +1,3 @@
usb-ftdi_sio-add-calao-reference-board-support.patch
usb-ehci-do-not-rely-on-port_suspend-to-stop-usb-resuming-in-ehci_bus_resume.patch
+rt2x00-do-not-drop-usb-dev-reference-counter-on-suspend.patch