[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAMRc=MfQCG3fAPdbtLO2iNqyu=Dq3-Urn9V5=FQBNVD5p-vyfg@mail.gmail.com>
Date: Fri, 6 Feb 2026 10:02:54 +0100
From: Bartosz Golaszewski <brgl@...nel.org>
To: Tzung-Bi Shih <tzungbi@...nel.org>
Cc: Linus Walleij <linusw@...nel.org>, linux-gpio@...r.kernel.org,
linux-kernel@...r.kernel.org, stable@...r.kernel.org
Subject: Re: [PATCH v3] gpio: Fix resource leaks on errors in gpiochip_add_data_with_key()
On Thu, Feb 5, 2026 at 10:29 AM Tzung-Bi Shih <tzungbi@...nel.org> 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@...r.kernel.org
> Fixes: aab5c6f20023 ("gpio: set device type for GPIO chips")
> Reviewed-by: Linus Walleij <linusw@...nel.org>
> Signed-off-by: Tzung-Bi Shih <tzungbi@...nel.org>
> ---
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
Powered by blists - more mailing lists