summaryrefslogtreecommitdiffstats
path: root/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0005-rtl8187-brightness_set-can-not-sleep.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0005-rtl8187-brightness_set-can-not-sleep.patch')
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0005-rtl8187-brightness_set-can-not-sleep.patch56
1 files changed, 56 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0005-rtl8187-brightness_set-can-not-sleep.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0005-rtl8187-brightness_set-can-not-sleep.patch
new file mode 100644
index 00000000..5a01a08c
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.24/0005-rtl8187-brightness_set-can-not-sleep.patch
@@ -0,0 +1,56 @@
1From c8ad2074ce769ad8b16677e0a9bee9232be03acc Mon Sep 17 00:00:00 2001
2From: Stanislaw Gruszka <sgruszka@redhat.com>
3Date: Wed, 16 May 2012 11:06:21 +0200
4Subject: [PATCH 005/109] rtl8187: ->brightness_set can not sleep
5
6commit 0fde0a8cfd0ede7f310d6a681c8e5a7cb3e32406 upstream.
7
8Fix:
9
10BUG: sleeping function called from invalid context at kernel/workqueue.c:2547
11in_atomic(): 1, irqs_disabled(): 0, pid: 629, name: wpa_supplicant
122 locks held by wpa_supplicant/629:
13 #0: (rtnl_mutex){+.+.+.}, at: [<c08b2b84>] rtnl_lock+0x14/0x20
14 #1: (&trigger->leddev_list_lock){.+.?..}, at: [<c0867f41>] led_trigger_event+0x21/0x80
15Pid: 629, comm: wpa_supplicant Not tainted 3.3.0-0.rc3.git5.1.fc17.i686
16Call Trace:
17 [<c046a9f6>] __might_sleep+0x126/0x1d0
18 [<c0457d6c>] wait_on_work+0x2c/0x1d0
19 [<c045a09a>] __cancel_work_timer+0x6a/0x120
20 [<c045a160>] cancel_delayed_work_sync+0x10/0x20
21 [<f7dd3c22>] rtl8187_led_brightness_set+0x82/0xf0 [rtl8187]
22 [<c0867f7c>] led_trigger_event+0x5c/0x80
23 [<f7ff5e6d>] ieee80211_led_radio+0x1d/0x40 [mac80211]
24 [<f7ff3583>] ieee80211_stop_device+0x13/0x230 [mac80211]
25
26Removing _sync is ok, because if led_on work is currently running
27it will be finished before led_off work start to perform, since
28they are always queued on the same mac80211 local->workqueue.
29
30Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=795176
31
32Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
33Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
34Acked-by: Hin-Tak Leung <htl10@users.sourceforge.net>
35Signed-off-by: John W. Linville <linville@tuxdriver.com>
36Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
37---
38 drivers/net/wireless/rtl818x/rtl8187/leds.c | 2 +-
39 1 files changed, 1 insertions(+), 1 deletions(-)
40
41diff --git a/drivers/net/wireless/rtl818x/rtl8187/leds.c b/drivers/net/wireless/rtl818x/rtl8187/leds.c
42index 2e0de2f..c2d5b49 100644
43--- a/drivers/net/wireless/rtl818x/rtl8187/leds.c
44+++ b/drivers/net/wireless/rtl818x/rtl8187/leds.c
45@@ -117,7 +117,7 @@ static void rtl8187_led_brightness_set(struct led_classdev *led_dev,
46 radio_on = true;
47 } else if (radio_on) {
48 radio_on = false;
49- cancel_delayed_work_sync(&priv->led_on);
50+ cancel_delayed_work(&priv->led_on);
51 ieee80211_queue_delayed_work(hw, &priv->led_off, 0);
52 }
53 } else if (radio_on) {
54--
551.7.7.6
56