[kernel/f17] rtl818x fix sleeping function called from invalid context (rhbz 795176)

Justin M. Forbes jforbes at fedoraproject.org
Wed May 16 21:05:36 UTC 2012


commit a8d5b8b14277965070249f011de7644e3f9007f0
Author: Justin M. Forbes <jforbes at redhat.com>
Date:   Wed May 16 16:06:13 2012 -0500

    rtl818x fix sleeping function called from invalid context (rhbz 795176)

 kernel.spec                                        |    9 ++++
 ...ping-function-called-from-invalid-context.patch |   49 ++++++++++++++++++++
 2 files changed, 58 insertions(+), 0 deletions(-)
---
diff --git a/kernel.spec b/kernel.spec
index e24d805..dca4217 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -808,6 +808,9 @@ Patch22017: 0001-drm-radeon-don-t-mess-with-hot-plug-detect-for-eDP-o.patch
 #rhbz 749276
 Patch22018: atl1c_net_next_update-3.3.patch
 
+#rhbz 795176
+Patch22019: rtl818x-fix-sleeping-function-called-from-invalid-context.patch
+
 # END OF PATCH DEFINITIONS
 
 %endif
@@ -1563,6 +1566,9 @@ ApplyPatch 0001-drm-radeon-don-t-mess-with-hot-plug-detect-for-eDP-o.patch
 #rhbz 749276
 ApplyPatch atl1c_net_next_update-3.3.patch
 
+#rhbz 795176
+ApplyPatch rtl818x-fix-sleeping-function-called-from-invalid-context.patch
+
 # END OF PATCH APPLICATIONS
 
 %endif
@@ -2417,6 +2423,9 @@ fi
 #    '-'      |  |
 #              '-'
 %changelog
+* Wed May 16 2012 Justin M. Forbes <jforbes at redhat.com> 3.3.6-3
+- fix rtl8187: ->brightness_set can not sleep (rhbz 795176)
+
 * Wed May 16 2012 Josh Boyer <jwboyer at redhat.com>
 - Update the vgaarb patches to pick up a small switcheroo fix from airlied
 
diff --git a/rtl818x-fix-sleeping-function-called-from-invalid-context.patch b/rtl818x-fix-sleeping-function-called-from-invalid-context.patch
new file mode 100644
index 0000000..141fcd2
--- /dev/null
+++ b/rtl818x-fix-sleeping-function-called-from-invalid-context.patch
@@ -0,0 +1,49 @@
+Fix:
+
+BUG: sleeping function called from invalid context at kernel/workqueue.c:2547
+in_atomic(): 1, irqs_disabled(): 0, pid: 629, name: wpa_supplicant
+2 locks held by wpa_supplicant/629:
+ #0:  (rtnl_mutex){+.+.+.}, at: [<c08b2b84>] rtnl_lock+0x14/0x20
+ #1:  (&trigger->leddev_list_lock){.+.?..}, at: [<c0867f41>] led_trigger_event+0x21/0x80
+Pid: 629, comm: wpa_supplicant Not tainted 3.3.0-0.rc3.git5.1.fc17.i686
+Call Trace:
+ [<c046a9f6>] __might_sleep+0x126/0x1d0
+ [<c0457d6c>] wait_on_work+0x2c/0x1d0
+ [<c045a09a>] __cancel_work_timer+0x6a/0x120
+ [<c045a160>] cancel_delayed_work_sync+0x10/0x20
+ [<f7dd3c22>] rtl8187_led_brightness_set+0x82/0xf0 [rtl8187]
+ [<c0867f7c>] led_trigger_event+0x5c/0x80
+ [<f7ff5e6d>] ieee80211_led_radio+0x1d/0x40 [mac80211]
+ [<f7ff3583>] ieee80211_stop_device+0x13/0x230 [mac80211]
+
+Removing _sync is ok, because if led_on work is currently running
+it will be finished before led_off work start to perform, since
+they are always queued on the same mac80211 local->workqueue.
+
+Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=795176
+
+Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
+---
+ drivers/net/wireless/rtl818x/rtl8187/leds.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/net/wireless/rtl818x/rtl8187/leds.c b/drivers/net/wireless/rtl818x/rtl8187/leds.c
+index 2e0de2f..c2d5b49 100644
+--- a/drivers/net/wireless/rtl818x/rtl8187/leds.c
++++ b/drivers/net/wireless/rtl818x/rtl8187/leds.c
+@@ -117,7 +117,7 @@ static void rtl8187_led_brightness_set(struct led_classdev *led_dev,
+ 			radio_on = true;
+ 		} else if (radio_on) {
+ 			radio_on = false;
+-			cancel_delayed_work_sync(&priv->led_on);
++			cancel_delayed_work(&priv->led_on);
+ 			ieee80211_queue_delayed_work(hw, &priv->led_off, 0);
+ 		}
+ 	} else if (radio_on) {
+-- 
+1.7.1
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
+the body of a message to majordomo at vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
\ No newline at end of file


More information about the scm-commits mailing list