Skip to content

Commit

Permalink
Merge branch 'fixes-for-3.7' of git://git.kernel.org/pub/scm/linux/ke…
Browse files Browse the repository at this point in the history
…rnel/git/cooloney/linux-leds

Pull LED fix from Bryan Wu.

* 'fixes-for-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds:
  ledtrig-cpu: kill useless mutex to fix sleep in atomic context
  • Loading branch information
Linus Torvalds committed Nov 13, 2012
2 parents b0db954 + 0b8728d commit 9dce781
Showing 1 changed file with 0 additions and 21 deletions.
21 changes: 0 additions & 21 deletions drivers/leds/ledtrig-cpu.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,6 @@
struct led_trigger_cpu {
char name[MAX_NAME_LEN];
struct led_trigger *_trig;
struct mutex lock;
int lock_is_inited;
};

static DEFINE_PER_CPU(struct led_trigger_cpu, cpu_trig);
Expand All @@ -50,12 +48,6 @@ void ledtrig_cpu(enum cpu_led_event ledevt)
{
struct led_trigger_cpu *trig = &__get_cpu_var(cpu_trig);

/* mutex lock should be initialized before calling mutex_call() */
if (!trig->lock_is_inited)
return;

mutex_lock(&trig->lock);

/* Locate the correct CPU LED */
switch (ledevt) {
case CPU_LED_IDLE_END:
Expand All @@ -75,8 +67,6 @@ void ledtrig_cpu(enum cpu_led_event ledevt)
/* Will leave the LED as it is */
break;
}

mutex_unlock(&trig->lock);
}
EXPORT_SYMBOL(ledtrig_cpu);

Expand Down Expand Up @@ -117,14 +107,9 @@ static int __init ledtrig_cpu_init(void)
for_each_possible_cpu(cpu) {
struct led_trigger_cpu *trig = &per_cpu(cpu_trig, cpu);

mutex_init(&trig->lock);

snprintf(trig->name, MAX_NAME_LEN, "cpu%d", cpu);

mutex_lock(&trig->lock);
led_trigger_register_simple(trig->name, &trig->_trig);
trig->lock_is_inited = 1;
mutex_unlock(&trig->lock);
}

register_syscore_ops(&ledtrig_cpu_syscore_ops);
Expand All @@ -142,15 +127,9 @@ static void __exit ledtrig_cpu_exit(void)
for_each_possible_cpu(cpu) {
struct led_trigger_cpu *trig = &per_cpu(cpu_trig, cpu);

mutex_lock(&trig->lock);

led_trigger_unregister_simple(trig->_trig);
trig->_trig = NULL;
memset(trig->name, 0, MAX_NAME_LEN);
trig->lock_is_inited = 0;

mutex_unlock(&trig->lock);
mutex_destroy(&trig->lock);
}

unregister_syscore_ops(&ledtrig_cpu_syscore_ops);
Expand Down

0 comments on commit 9dce781

Please sign in to comment.