From: Daniel Gl?ckner Date: Wed, 11 Aug 2010 01:02:26 +0000 (-0700) Subject: gpiolib: allow nested threaded irqs for poll(2) X-Git-Tag: v2.6.36-rc1~191 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=364fadb32b67695cec610f5cd03df2514ef0f2b0;p=~emulex%2Finfiniband.git gpiolib: allow nested threaded irqs for poll(2) The pca953x driver requires the use of threaded irqs as its irq demultiplexer can sleep. Our irq handler can be called from any context, so use request_any_context_irq to allow threaded irqs as well. Signed-off-by: Daniel Gl?ckner Reported-by: Ian Jeffray Cc: David Brownell Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 8a29404985f..21da9c19a0c 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -386,9 +386,9 @@ static int gpio_setup_irq(struct gpio_desc *desc, struct device *dev, } } - ret = request_irq(irq, gpio_sysfs_irq, irq_flags, + ret = request_any_context_irq(irq, gpio_sysfs_irq, irq_flags, "gpiolib", value_sd); - if (ret) + if (ret < 0) goto free_id; desc->flags |= gpio_flags;