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
|
* This descriptor validation needs to be inserted verbatim into each
|
||||||
* function taking a descriptor, so we need to use a preprocessor
|
* 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 { \
|
#define VALIDATE_DESC(desc) do { \
|
||||||
if (!desc || !desc->gdev) { \
|
if (!desc) \
|
||||||
|
return 0; \
|
||||||
|
if (!desc->gdev) { \
|
||||||
pr_warn("%s: invalid GPIO\n", __func__); \
|
pr_warn("%s: invalid GPIO\n", __func__); \
|
||||||
return -EINVAL; \
|
return -EINVAL; \
|
||||||
} \
|
} \
|
||||||
@ -1381,7 +1384,9 @@ done:
|
|||||||
} } while (0)
|
} } while (0)
|
||||||
|
|
||||||
#define VALIDATE_DESC_VOID(desc) do { \
|
#define VALIDATE_DESC_VOID(desc) do { \
|
||||||
if (!desc || !desc->gdev) { \
|
if (!desc) \
|
||||||
|
return; \
|
||||||
|
if (!desc->gdev) { \
|
||||||
pr_warn("%s: invalid GPIO\n", __func__); \
|
pr_warn("%s: invalid GPIO\n", __func__); \
|
||||||
return; \
|
return; \
|
||||||
} \
|
} \
|
||||||
|
Loading…
Reference in New Issue
Block a user