The current code only frees N-1 gpios if an error occurs during gpiod_set_transitory, gpiod_direction_output or gpiod_direction_input. Leading to gpios that cannot be used by userspace nor other drivers.
Cc: Timur Tabi timur@codeaurora.org Cc: stable@vger.kernel.org Fixes: ab3dbcf78f60f46d ("gpioib: do not free unrequested descriptors) Signed-off-by: Ricardo Ribalda Delgado ricardo.ribalda@gmail.com --- drivers/gpio/gpiolib.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index e8f8a1999393..a57300c1d649 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -571,7 +571,7 @@ static int linehandle_create(struct gpio_device *gdev, void __user *ip) if (ret) goto out_free_descs; lh->descs[i] = desc; - count = i; + count = i + 1;
if (lflags & GPIOHANDLE_REQUEST_ACTIVE_LOW) set_bit(FLAG_ACTIVE_LOW, &desc->flags);
Reported-by: Jan Lorenzen jl@newtec.dk On Thu, Sep 13, 2018 at 3:37 PM Ricardo Ribalda Delgado ricardo.ribalda@gmail.com wrote:
The current code only frees N-1 gpios if an error occurs during gpiod_set_transitory, gpiod_direction_output or gpiod_direction_input. Leading to gpios that cannot be used by userspace nor other drivers.
Cc: Timur Tabi timur@codeaurora.org Cc: stable@vger.kernel.org Fixes: ab3dbcf78f60f46d ("gpioib: do not free unrequested descriptors) Signed-off-by: Ricardo Ribalda Delgado ricardo.ribalda@gmail.com
drivers/gpio/gpiolib.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index e8f8a1999393..a57300c1d649 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -571,7 +571,7 @@ static int linehandle_create(struct gpio_device *gdev, void __user *ip) if (ret) goto out_free_descs; lh->descs[i] = desc;
count = i;
count = i + 1; if (lflags & GPIOHANDLE_REQUEST_ACTIVE_LOW) set_bit(FLAG_ACTIVE_LOW, &desc->flags);
-- 2.18.0
On Thu, Sep 13, 2018 at 3:37 PM Ricardo Ribalda Delgado ricardo.ribalda@gmail.com wrote:
The current code only frees N-1 gpios if an error occurs during gpiod_set_transitory, gpiod_direction_output or gpiod_direction_input. Leading to gpios that cannot be used by userspace nor other drivers.
Cc: Timur Tabi timur@codeaurora.org Cc: stable@vger.kernel.org Fixes: ab3dbcf78f60f46d ("gpioib: do not free unrequested descriptors) Signed-off-by: Ricardo Ribalda Delgado ricardo.ribalda@gmail.com
Patch applied for fixes with Jan's Reported-by tag.
Yours, Linus Walleij
Hi Linus On Fri, Sep 14, 2018 at 10:56 AM Linus Walleij linus.walleij@linaro.org wrote:
On Thu, Sep 13, 2018 at 3:37 PM Ricardo Ribalda Delgado ricardo.ribalda@gmail.com wrote:
The current code only frees N-1 gpios if an error occurs during gpiod_set_transitory, gpiod_direction_output or gpiod_direction_input. Leading to gpios that cannot be used by userspace nor other drivers.
Cc: Timur Tabi timur@codeaurora.org Cc: stable@vger.kernel.org Fixes: ab3dbcf78f60f46d ("gpioib: do not free unrequested descriptors) Signed-off-by: Ricardo Ribalda Delgado ricardo.ribalda@gmail.com
Patch applied for fixes with Jan's Reported-by tag.
Just a heads-up
I haven't seem the patch on your kernel tree at https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git/refs/h...
it is probably on your computer tree, but I wanted to make sure the patch is not lost in the wind :P
Thanks!
Yours, Linus Walleij
On Mon, Sep 17, 2018 at 3:14 AM Ricardo Ribalda Delgado ricardo.ribalda@gmail.com wrote:
Just a heads-up
I haven't seem the patch on your kernel tree at https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git/refs/h...
it is probably on your computer tree, but I wanted to make sure the patch is not lost in the wind :P
I was just travelling, it's in there now and pushed for next!
Yours, Linus Walleij
linux-stable-mirror@lists.linaro.org