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 <samuel@sholland.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Samuel Holland 2021-09-11 17:05:52 -05:00 committed by Tom Rini
parent 390ccffe07
commit 37c10bf7ef

View File

@ -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;