diff options
author | Richard Purdie <rpurdie@rpsys.net> | 2007-11-10 08:29:04 -0500 |
---|---|---|
committer | Richard Purdie <rpurdie@rpsys.net> | 2007-12-07 04:06:53 -0500 |
commit | dc47206e552c0850ad11f7e9a1fca0a3c92f5d65 (patch) | |
tree | 01188f5ca89d295009a618e1be6c5cea2926a522 /include/linux | |
parent | f194d132e4971111f85c18c96067acffb13cee6d (diff) |
leds: Fix led trigger locking bugs
Convert part of the led trigger core from rw spinlocks to rw
semaphores. We're calling functions which can sleep from invalid
contexts otherwise. Fixes bug #9264.
Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/leds.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/linux/leds.h b/include/linux/leds.h index dc1178f6184b..b4130ff58d0c 100644 --- a/include/linux/leds.h +++ b/include/linux/leds.h | |||
@@ -14,6 +14,7 @@ | |||
14 | 14 | ||
15 | #include <linux/list.h> | 15 | #include <linux/list.h> |
16 | #include <linux/spinlock.h> | 16 | #include <linux/spinlock.h> |
17 | #include <linux/rwsem.h> | ||
17 | 18 | ||
18 | struct device; | 19 | struct device; |
19 | /* | 20 | /* |
@@ -43,7 +44,7 @@ struct led_classdev { | |||
43 | 44 | ||
44 | #ifdef CONFIG_LEDS_TRIGGERS | 45 | #ifdef CONFIG_LEDS_TRIGGERS |
45 | /* Protects the trigger data below */ | 46 | /* Protects the trigger data below */ |
46 | rwlock_t trigger_lock; | 47 | struct rw_semaphore trigger_lock; |
47 | 48 | ||
48 | struct led_trigger *trigger; | 49 | struct led_trigger *trigger; |
49 | struct list_head trig_list; | 50 | struct list_head trig_list; |