From e2f608be640a126da50be605e1a81b988c9ac0d6 Mon Sep 17 00:00:00 2001 From: Linus Walleij Date: Sat, 18 Jun 2016 10:56:43 +0200 Subject: [PATCH] gpio: make the iterator point to last handle When initializing the GPIO handles, we use the iterator (i) to back off if something goes wrong. But since the iterator is also used after we pass the loop, we must decrement by one after exiting the loop so that we point at the last element in the array. Reported-by: Dan Carpenter Cc: Dan Carpenter Cc: Walter Harms Signed-off-by: Linus Walleij --- drivers/gpio/gpiolib.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index c826844..b504364 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -474,6 +474,8 @@ static int linehandle_create(struct gpio_device *gdev, void __user *ip) dev_dbg(&gdev->dev, "registered chardev handle for line %d\n", offset); } + /* Let i point at the last handle */ + i--; lh->numdescs = handlereq.lines; fd = anon_inode_getfd("gpio-linehandle", -- 2.7.4