mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-21 23:16:50 +08:00
gpiolib: normalize the return value of gc->get() on behalf of buggy drivers
Commit86ef402d80("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:86ef402d80("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>
This commit is contained in:
@@ -3267,8 +3267,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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user