mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
gpio: make library immune to error pointers
Most functions that take a GPIO descriptor in need to check the descriptor for IS_ERR(). We do this mostly in the VALIDATE_DESC() macro except for the gpiod_to_irq() function which needs special handling. Cc: stable@vger.kernel.org Reported-by: Grygorii Strashko <grygorii.strashko@ti.com> Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com> Acked-by: Alexandre Courbot <acourbot@nvidia.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
39243ee771
commit
c0a1ecb9f4
@ -1373,8 +1373,12 @@ done:
|
|||||||
#define VALIDATE_DESC(desc) do { \
|
#define VALIDATE_DESC(desc) do { \
|
||||||
if (!desc) \
|
if (!desc) \
|
||||||
return 0; \
|
return 0; \
|
||||||
|
if (IS_ERR(desc)) { \
|
||||||
|
pr_warn("%s: invalid GPIO (errorpointer)\n", __func__); \
|
||||||
|
return PTR_ERR(desc); \
|
||||||
|
} \
|
||||||
if (!desc->gdev) { \
|
if (!desc->gdev) { \
|
||||||
pr_warn("%s: invalid GPIO\n", __func__); \
|
pr_warn("%s: invalid GPIO (no device)\n", __func__); \
|
||||||
return -EINVAL; \
|
return -EINVAL; \
|
||||||
} \
|
} \
|
||||||
if ( !desc->gdev->chip ) { \
|
if ( !desc->gdev->chip ) { \
|
||||||
@ -1386,8 +1390,12 @@ done:
|
|||||||
#define VALIDATE_DESC_VOID(desc) do { \
|
#define VALIDATE_DESC_VOID(desc) do { \
|
||||||
if (!desc) \
|
if (!desc) \
|
||||||
return; \
|
return; \
|
||||||
|
if (IS_ERR(desc)) { \
|
||||||
|
pr_warn("%s: invalid GPIO (errorpointer)\n", __func__); \
|
||||||
|
return; \
|
||||||
|
} \
|
||||||
if (!desc->gdev) { \
|
if (!desc->gdev) { \
|
||||||
pr_warn("%s: invalid GPIO\n", __func__); \
|
pr_warn("%s: invalid GPIO (no device)\n", __func__); \
|
||||||
return; \
|
return; \
|
||||||
} \
|
} \
|
||||||
if (!desc->gdev->chip) { \
|
if (!desc->gdev->chip) { \
|
||||||
@ -2061,7 +2069,7 @@ int gpiod_to_irq(const struct gpio_desc *desc)
|
|||||||
* requires this function to not return zero on an invalid descriptor
|
* requires this function to not return zero on an invalid descriptor
|
||||||
* but rather a negative error number.
|
* but rather a negative error number.
|
||||||
*/
|
*/
|
||||||
if (!desc || !desc->gdev || !desc->gdev->chip)
|
if (!desc || IS_ERR(desc) || !desc->gdev || !desc->gdev->chip)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
chip = desc->gdev->chip;
|
chip = desc->gdev->chip;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user