According to the documentation gpio_free should only be called from task context only. To make this more explicit add a might sleep to all implementations. This patch changes the gpio_free implementations for the mips architecture. Signed-off-by: Uwe Kleine-König <ukleinek@xxxxxxxxxxxxxxxxxxxxxxxxxx> Cc: David Brownell <david-b@xxxxxxxxxxx> Cc: Ralf Baechle <ralf@xxxxxxxxxxxxxx> Cc: linux-mips@xxxxxxxxxxxxxx Cc: Guennadi Liakhovetski <g.liakhovetski@xxxxxxxxxxxxxx> Cc: Greg KH <greg@xxxxxxxxx> Cc: Kay Sievers <kay.sievers@xxxxxxxx> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Cc: Russell King <rmk+kernel@xxxxxxxxxxxxxxxx> --- include/asm-mips/mach-au1x00/gpio.h | 2 ++ include/asm-mips/mach-bcm47xx/gpio.h | 3 +++ include/asm-mips/mach-rc32434/gpio.h | 2 ++ 3 files changed, 7 insertions(+), 0 deletions(-) diff --git a/include/asm-mips/mach-au1x00/gpio.h b/include/asm-mips/mach-au1x00/gpio.h index 2dc61e0..31eddba 100644 --- a/include/asm-mips/mach-au1x00/gpio.h +++ b/include/asm-mips/mach-au1x00/gpio.h @@ -1,6 +1,7 @@ #ifndef _AU1XXX_GPIO_H_ #define _AU1XXX_GPIO_H_ +#include <linux/kernel.h> #include <linux/types.h> #define AU1XXX_GPIO_BASE 200 @@ -31,6 +32,7 @@ static inline int gpio_request(unsigned gpio, const char *label) static inline void gpio_free(unsigned gpio) { /* Not yet implemented */ + might_sleep(); } static inline int gpio_direction_input(unsigned gpio) diff --git a/include/asm-mips/mach-bcm47xx/gpio.h b/include/asm-mips/mach-bcm47xx/gpio.h index cfc8f4d..af17ccd 100644 --- a/include/asm-mips/mach-bcm47xx/gpio.h +++ b/include/asm-mips/mach-bcm47xx/gpio.h @@ -9,6 +9,8 @@ #ifndef __BCM47XX_GPIO_H #define __BCM47XX_GPIO_H +#include <linux/kernel.h> + #define BCM47XX_EXTIF_GPIO_LINES 5 #define BCM47XX_CHIPCO_GPIO_LINES 16 @@ -25,6 +27,7 @@ static inline int gpio_request(unsigned gpio, const char *label) static inline void gpio_free(unsigned gpio) { + might_sleep(); } static inline int gpio_to_irq(unsigned gpio) diff --git a/include/asm-mips/mach-rc32434/gpio.h b/include/asm-mips/mach-rc32434/gpio.h index f946f5f..9b4722e 100644 --- a/include/asm-mips/mach-rc32434/gpio.h +++ b/include/asm-mips/mach-rc32434/gpio.h @@ -13,6 +13,7 @@ #ifndef _RC32434_GPIO_H_ #define _RC32434_GPIO_H_ +#include <linux/kernel.h> #include <linux/types.h> struct rb532_gpio_reg { @@ -88,6 +89,7 @@ static inline int gpio_request(unsigned gpio, const char *label) static inline void gpio_free(unsigned gpio) { /* Not yet implemented */ + might_sleep(); } static inline int gpio_direction_input(unsigned gpio) -- 1.5.6.5