diff options
| author | Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> | 2026-10-14 11:38:26 +0200 |
|---|---|---|
| committer | Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> | 2026-10-15 14:05:28 +0200 |
| commit | cf73c3fc03c43a8a86fd487c62390b4744eff9ec (patch) | |
| tree | 616377c34214ed77d89e80430f80ac4b56955980 /drivers | |
| parent | bd22f7e63509fa758cf500d9af3e88a3d3df96be (diff) | |
gpio: shared: gracefully handle no-device lookup of shared GPIOs
We use platform lookup tables for shared GPIOs. This mechanism needs a
struct device to work so fwnode-based lookup with no device associated
currently causes a NULL-pointer deference.
Adding this functionality will require a larger rework and it has never
worked anyway so add a check that allows the kernel to gracefully handle
this situation with an error ahead of implementing that functionality as
a new feature.
Cc: stable@vger.kernel.org
Reported-by: Abel Vesa <abelvesa@kernel.org>
Fixes: a060b8c511ab ("gpiolib: implement low-level, shared GPIO support")
Link: https://patch.msgid.link/20261014-gpio-shared-fwnode-lookup-v4-2-2253ad645fd6@oss.qualcomm.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/gpio/gpiolib-shared.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/gpio/gpiolib-shared.c b/drivers/gpio/gpiolib-shared.c index 6acfec73b734..8c9ac9d93304 100644 --- a/drivers/gpio/gpiolib-shared.c +++ b/drivers/gpio/gpiolib-shared.c @@ -449,9 +449,14 @@ static bool gpio_shared_dev_is_reset_gpio(struct device *consumer, int gpio_shared_add_proxy_lookup(struct device *consumer, struct fwnode_handle *fwnode, const char *con_id, unsigned long lflags) { - const char *dev_id = dev_name(consumer); struct gpio_shared_entry *entry; struct gpio_shared_ref *ref; + const char *dev_id; + + if (!consumer) + return -EOPNOTSUPP; + + dev_id = dev_name(consumer); list_for_each_entry(entry, &gpio_shared_list, list) { list_for_each_entry(ref, &entry->refs, list) { |
