gpio: bail out silently on NULL descriptors
Infdeb8e1547
("gpio: reflect base and ngpio into gpio_device") assumed that GPIO descriptors are either valid or error pointers, but gpiod_get_[index_]optional() actually return NULL descriptors and then all subsequent calls should just bail out. Cc: stable@vger.kernel.org Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> Cc: Florian Fainelli <f.fainelli@gmail.com> Cc: Andrew Lunn <andrew@lunn.ch> Fixes:fdeb8e1547
("gpio: reflect base and ngpio into gpio_device") Reported-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
8b92e17efe
commit
54d77198fd
|
@ -1367,10 +1367,13 @@ done:
|
|||
/*
|
||||
* This descriptor validation needs to be inserted verbatim into each
|
||||
* function taking a descriptor, so we need to use a preprocessor
|
||||
* macro to avoid endless duplication.
|
||||
* macro to avoid endless duplication. If the desc is NULL it is an
|
||||
* optional GPIO and calls should just bail out.
|
||||
*/
|
||||
#define VALIDATE_DESC(desc) do { \
|
||||
if (!desc || !desc->gdev) { \
|
||||
if (!desc) \
|
||||
return 0; \
|
||||
if (!desc->gdev) { \
|
||||
pr_warn("%s: invalid GPIO\n", __func__); \
|
||||
return -EINVAL; \
|
||||
} \
|
||||
|
@ -1381,7 +1384,9 @@ done:
|
|||
} } while (0)
|
||||
|
||||
#define VALIDATE_DESC_VOID(desc) do { \
|
||||
if (!desc || !desc->gdev) { \
|
||||
if (!desc) \
|
||||
return; \
|
||||
if (!desc->gdev) { \
|
||||
pr_warn("%s: invalid GPIO\n", __func__); \
|
||||
return; \
|
||||
} \
|
||||
|
|
Loading…
Reference in New Issue