Home
last modified time | relevance | path

Searched hist:"82736 f4d1d2b7063b829cc93171a6e5aea8a9c49" (Results 1 – 1 of 1) sorted by relevance

/openbmc/linux/kernel/irq/
H A Dmanage.cdiff 82736f4d1d2b7063b829cc93171a6e5aea8a9c49 Wed Jul 23 23:28:54 CDT 2008 Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com> generic irqs: handle failure of irqchip->set_type in setup_irq

set_type returns an int indicating success or failure, but up to now
setup_irq ignores that.

In my case this resulted in a machine hang:

gpio-keys requested IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, but
arm/ns9xxx can only trigger on one direction so set_type didn't touch
the configuration which happens do default to a level sensitiveness and
returned -EINVAL. setup_irq ignored that and unmasked the irq. This
resulted in an endless triggering of the gpio-key interrupt service
routine which effectively killed the machine.

With this patch applied setup_irq propagates the error to the caller.

Note that before in the case

chip && !chip->set_type && !chip->name

a NULL pointer was feed to printk. This is fixed, too.

Signed-off-by: Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>