Message ID | 20180913133704.15739-1-ricardo.ribalda@gmail.com |
---|---|
State | New |
Headers | show |
Series | gpiolib: Free the last requested descriptor | expand |
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/heads 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/heads > > 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
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);
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(-)