From: Ingo Molnar Convert the irq auto-probing semaphore to a mutex. (This allows us to find probing API usage bugs sooner, via the mutex debugging code.) Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner Signed-off-by: Andrew Morton --- kernel/irq/autoprobe.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) diff -puN kernel/irq/autoprobe.c~genirq-sem2mutex-probe_sem-probing_active kernel/irq/autoprobe.c --- devel/kernel/irq/autoprobe.c~genirq-sem2mutex-probe_sem-probing_active 2006-05-22 15:12:18.000000000 -0700 +++ devel-akpm/kernel/irq/autoprobe.c 2006-05-22 15:12:18.000000000 -0700 @@ -16,7 +16,7 @@ * comes in on to an unassigned handler will get stuck with * "IRQ_WAITING" cleared and the interrupt disabled. */ -static DECLARE_MUTEX(probe_sem); +static DEFINE_MUTEX(probing_active); /** * probe_irq_on - begin an interrupt autodetect @@ -31,7 +31,7 @@ unsigned long probe_irq_on(void) irq_desc_t *desc; unsigned int i; - down(&probe_sem); + mutex_lock(&probing_active); /* * something may have generated an irq long ago and we want to * flush such a longstanding irq before considering it as spurious. @@ -132,7 +132,7 @@ unsigned int probe_irq_mask(unsigned lon } spin_unlock_irq(&desc->lock); } - up(&probe_sem); + mutex_unlock(&probing_active); return mask & val; } @@ -177,10 +177,11 @@ int probe_irq_off(unsigned long val) } spin_unlock_irq(&desc->lock); } - up(&probe_sem); + mutex_unlock(&probing_active); if (nr_irqs > 1) irq_found = -irq_found; + return irq_found; } _