Re: [PATCH v2] gpiolib: normalize the return value of gc->get() on behalf of buggy drivers

From: Dmitry Torokhov

Date: Thu Feb 19 2026 - 11:59:59 EST


On Thu, Feb 19, 2026 at 10:51:33AM +0100, Bartosz Golaszewski wrote:
> Commit 86ef402d805d ("gpiolib: sanitize the return value of
> gpio_chip::get()") started checking the return value of the .get()
> callback in struct gpio_chip. Now - almost a year later - it turns out
> that there are quite a few drivers in tree that can break with this
> change. Partially revert it: normalize the return value in GPIO core but
> also emit a warning.
>
> Cc: stable@xxxxxxxxxxxxxxx
> Fixes: 86ef402d805d ("gpiolib: sanitize the return value of gpio_chip::get()")
> Reported-by: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>
> Closes: https://lore.kernel.org/all/aZSkqGTqMp_57qC7@xxxxxxxxxx/
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxxxxxxxx>
> ---
> Changes in v2:
> - it's gpio_chip::get() that needs normalizing, not gpio_chip::set()
> - Link to v1: https://patch.msgid.link/20260219-gpiolib-set-normalize-v1-1-f0d53a009db4@xxxxxxxxxxxxxxxx
> ---
> drivers/gpio/gpiolib.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> index c52200eaaaff82b12f22dd1ee8459bdd8ec10d81..c9cd751e7de2307fc5994eb682c53f2b3ce39233 100644
> --- a/drivers/gpio/gpiolib.c
> +++ b/drivers/gpio/gpiolib.c
> @@ -3268,8 +3268,12 @@ static int gpiochip_get(struct gpio_chip *gc, unsigned int offset)
>
> /* Make sure this is called after checking for gc->get(). */
> ret = gc->get(gc, offset);
> - if (ret > 1)
> - ret = -EBADE;
> + if (ret > 1) {
> + gpiochip_warn(gc,
> + "invalid return value from gc->get(): %d, consider fixing the driver\n",
> + ret);
> + ret = !!ret;
> + }
>
> return ret;
> }

Thank you Bartosz. I guess this could turn out to be pretty noisy but
maybe that will make users report it faster ;)

Reviewed-by: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>

--
Dmitry