[PATCH v2 00/10] gpio/pinctrl: replace gpiochip_is_requested() with a safer interface

From: Bartosz Golaszewski
Date: Thu Nov 30 2023 - 08:46:55 EST


From: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>

While reworking the locking in GPIOLIB I realized that locking the
descriptor with users still calling gpiochip_is_requested() will still
be buggy as it returns a pointer to a string that can be freed whenever
the descriptor is released. Let's provide a safer alternative in the
form of a function that returns a copy of the label.

Use it in all drivers and remove gpiochip_is_requested().

I plan to provide this series in an immutable branch for the pinctrl and
baytrail trees to pull.

v1 -> v2:
- use DEFINE_CLASS() to register a destructor for making sure that the
duplicated label doesn't leak out of the for_each loops even with
break;

Bartosz Golaszewski (10):
gpiolib: provide gpiochip_dup_line_label()
gpio: wm831x: use gpiochip_dup_line_label()
gpio: wm8994: use gpiochip_dup_line_label()
gpio: stmpe: use gpiochip_dup_line_label()
pinctrl: abx500: use gpiochip_dup_line_label()
pinctrl: nomadik: use gpiochip_dup_line_label()
pinctrl: baytrail: use gpiochip_dup_line_label()
pinctrl: sppctl: use gpiochip_dup_line_label()
gpiolib: use gpiochip_dup_line_label() in for_each helpers
gpiolib: remove gpiochip_is_requested()

drivers/gpio/gpio-stmpe.c | 6 +++-
drivers/gpio/gpio-wm831x.c | 14 ++++++---
drivers/gpio/gpio-wm8994.c | 13 +++++---
drivers/gpio/gpiolib.c | 37 ++++++++++++++---------
drivers/pinctrl/intel/pinctrl-baytrail.c | 11 ++++---
drivers/pinctrl/nomadik/pinctrl-abx500.c | 9 ++++--
drivers/pinctrl/nomadik/pinctrl-nomadik.c | 6 +++-
drivers/pinctrl/sunplus/sppctl.c | 10 +++---
include/linux/gpio/driver.h | 37 +++++++++++++++++------
9 files changed, 95 insertions(+), 48 deletions(-)

--
2.40.1