Re: [PATCH v3] gpio: Fix resource leaks on errors in gpiochip_add_data_with_key()

From: Bartosz Golaszewski

Date: Fri Feb 06 2026 - 04:03:18 EST


On Thu, Feb 5, 2026 at 10:29 AM Tzung-Bi Shih <tzungbi@xxxxxxxxxx> wrote:
>
> Since commit aab5c6f20023 ("gpio: set device type for GPIO chips"),
> `gdev->dev.release` is unset. As a result, the reference count to
> `gdev->dev` isn't dropped on the error handling paths.
>
> Drop the reference on errors.
>
> Also reorder the instructions to make the error handling simpler.
> Now gpiochip_add_data_with_key() roughly looks like:
>
> >>> Some memory allocation. Go to ERR ZONE 1 on errors.
> >>> device_initialize().
>
> gpiodev_release() takes over the responsibility for freeing the
> resources of `gdev->dev`. The subsequent error handling paths
> shouldn't go through ERR ZONE 1 again which leads to double free.
>
> >>> Some initialization mainly on `gdev`.
> >>> The rest of initialization. Go to ERR ZONE 2 on errors.
> >>> Chip registration success and exit.
>
> >>> ERR ZONE 2. gpio_device_put() and exit.
> >>> ERR ZONE 1.
>
> Cc: stable@xxxxxxxxxxxxxxx
> Fixes: aab5c6f20023 ("gpio: set device type for GPIO chips")
> Reviewed-by: Linus Walleij <linusw@xxxxxxxxxx>
> Signed-off-by: Tzung-Bi Shih <tzungbi@xxxxxxxxxx>
> ---

This looks good, I will queue this right after v7.0-rc1 is tagged
because this is way too risky for rc8. Let's let it spend a couple
weeks in next.

Bart