diff options
| author | Zhangfei Gao <zhangfei.gao@linaro.org> | 2013-06-09 11:08:32 +0800 |
|---|---|---|
| committer | Todd Poynor <toddpoynor@google.com> | 2013-12-18 18:43:55 -0800 |
| commit | d214ac7202b30062bf3164b61fc466793d359f7b (patch) | |
| tree | c3dd21d360a8cf7071654d2211688b219efd409d /drivers/gpio/gpiolib.c | |
| parent | 39293584f8a423bcb4efba635cddacc3d4d0b85e (diff) | |
| download | olio-linux-3.10-d214ac7202b30062bf3164b61fc466793d359f7b.tar.xz olio-linux-3.10-d214ac7202b30062bf3164b61fc466793d359f7b.zip | |
gpiolib: remove warnning of allocations with IRQs disabled
Move of_gpiochip_add outof spin_lock, since kzalloc inside
of_gpiochip_add -> of_gpiochip_add_pin_range -> gpiochip_add_pin_range -> kzalloc
WARNING: at kernel/lockdep.c:2740 lockdep_trace_alloc+0xf8/0xfc()
DEBUG_LOCKS_WARN_ON(irqs_disabled_flags(flags))
Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/gpio/gpiolib.c')
| -rw-r--r-- | drivers/gpio/gpiolib.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 4aff349386d..a35c5b932eb 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -1214,15 +1214,14 @@ int gpiochip_add(struct gpio_chip *chip) } } + spin_unlock_irqrestore(&gpio_lock, flags); + #ifdef CONFIG_PINCTRL INIT_LIST_HEAD(&chip->pin_ranges); #endif of_gpiochip_add(chip); -unlock: - spin_unlock_irqrestore(&gpio_lock, flags); - if (status) goto fail; @@ -1235,6 +1234,9 @@ unlock: chip->label ? : "generic"); return 0; + +unlock: + spin_unlock_irqrestore(&gpio_lock, flags); fail: /* failures here can mean systems won't boot... */ pr_err("gpiochip_add: gpios %d..%d (%s) failed to register\n", |