gpio: Remove VLA from gpiolib
authorLaura Abbott <labbott@redhat.com>
Mon, 21 May 2018 17:57:07 +0000 (10:57 -0700)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 23 May 2018 12:01:03 +0000 (14:01 +0200)
commit3027743f83f867d85662f5134e835c2e199cb9be
tree9afbf1a13136d57191cb2a40c53dc4607c642b34
parented5cab43f99d1629af0e34ff565aa14efe0a8ac9
gpio: Remove VLA from gpiolib

The new challenge is to remove VLAs from the kernel
(see https://lkml.org/lkml/2018/3/7/621) to eventually
turn on -Wvla.

Using a kmalloc array is the easy way to fix this but kmalloc is still
more expensive than stack allocation. Introduce a fast path with a
fixed size stack array to cover most chip with gpios below some fixed
amount. The slow path dynamically allocates an array to cover those
chips with a large number of gpios.

Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Phil Reid <preid@electromag.com.au>
Reviewed-and-tested-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Laura Abbott <labbott@redhat.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/Kconfig
drivers/gpio/gpiolib.c
drivers/gpio/gpiolib.h
include/linux/gpio/consumer.h