From ceec01eb39706059ca6f2d8807a68d6d1cbad0c7 Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Sat, 11 Sep 2021 17:05:52 -0500 Subject: [PATCH] gpio: Verify validity of pin offsets from device trees Translation of an OF GPIO specifier should fail if the pin offset is larger than the number of pins in the GPIO bank. Signed-off-by: Samuel Holland Reviewed-by: Simon Glass --- drivers/gpio/gpio-uclass.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/gpio/gpio-uclass.c b/drivers/gpio/gpio-uclass.c index 45a7f8def4..fde046e8df 100644 --- a/drivers/gpio/gpio-uclass.c +++ b/drivers/gpio/gpio-uclass.c @@ -189,10 +189,14 @@ int gpio_lookup_name(const char *name, struct udevice **devp, int gpio_xlate_offs_flags(struct udevice *dev, struct gpio_desc *desc, struct ofnode_phandle_args *args) { + struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev); + if (args->args_count < 1) return -EINVAL; desc->offset = args->args[0]; + if (desc->offset >= uc_priv->gpio_count) + return -EINVAL; if (args->args_count < 2) return 0; -- 2.39.5