Skip to content

Commit ec2ccea

Browse files
author
Bartosz Golaszewski
committed
gpiolib: normalize the return value of gc->get() on behalf of buggy drivers
Commit 86ef402 ("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@vger.kernel.org Fixes: 86ef402 ("gpiolib: sanitize the return value of gpio_chip::get()") Reported-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Closes: https://lore.kernel.org/all/aZSkqGTqMp_57qC7@google.com/ Reviewed-by: Linus Walleij <linusw@kernel.org> Reviewed-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Link: https://patch.msgid.link/20260219-gpiolib-set-normalize-v2-1-f84630e45796@oss.qualcomm.com Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
1 parent 32e0a7a commit ec2ccea

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

drivers/gpio/gpiolib.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3267,8 +3267,12 @@ static int gpiochip_get(struct gpio_chip *gc, unsigned int offset)
32673267

32683268
/* Make sure this is called after checking for gc->get(). */
32693269
ret = gc->get(gc, offset);
3270-
if (ret > 1)
3271-
ret = -EBADE;
3270+
if (ret > 1) {
3271+
gpiochip_warn(gc,
3272+
"invalid return value from gc->get(): %d, consider fixing the driver\n",
3273+
ret);
3274+
ret = !!ret;
3275+
}
32723276

32733277
return ret;
32743278
}

0 commit comments

Comments
 (0)