Re: [PATCH v5 08/12] gpio: aggregator: export symbols of the GPIO forwarder library
From: Geert Uytterhoeven <geert@linux-m68k.org>
Date: 2025-05-12 14:39:55
Also in:
linux-hardening, lkml
Hi Thomas, On Mon, 12 May 2025 at 16:08, Thomas Richard [off-list ref] wrote:
On 5/9/25 11:07, Geert Uytterhoeven wrote:quoted
On Tue, 6 May 2025 at 17:21, Thomas Richard [off-list ref] wrote:quoted
Export all symbols and create header file for the GPIO forwarder library. It will be used in the next changes. Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>...quoted
quoted
+ +int gpio_fwd_set_config(struct gpio_chip *chip, unsigned int offset, + unsigned long config); + +int gpio_fwd_to_irq(struct gpio_chip *chip, unsigned int offset);I would expect all of these to take gpiochip_fwd pointers instead of gpio_chip pointers. What prevents you from passing a gpio_chip pointer that does not correspond to a gpiochip_fwd object, causing a crash?Indeed nothing prevents from passing gpio_chip pointer which does not correspond to a gpiochip_fwd object. And it is also a bit weird to pass a gpiochip_fwd pointer in some cases (for example gpio_fwd_gpio_add()) and a gpio_chip in other cases. I can keep GPIO operations as is, and create exported wrappers which take a gpiochip_fwd pointer as parameter, for example: int gpiochip_fwd_get_multiple(struct gpiochip_fwd *fwd, unsigned long *mask, unsigned long *bits) { struct gpio_chip *gc = gpiochip_fwd_get_gpiochip(fwd); return gpio_fwd_get_multiple_locked(chip, mask, bits); } EXPORT_SYMBOL_NS_GPL(gpiochip_fwd_get_multiple, "GPIO_FORWARDER"); So exported functions are gpiochip_fwd_*().
That sounds fine to me.
BTW, do you need to use these functions as gpio_chip callbacks?
If that is the case, they do no need to take struct gpio_chip pointers.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds