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:42:44
Also in:
linux-hardening, lkml
Hi Thomas, On Mon, 12 May 2025 at 16:30, Thomas Richard [off-list ref] wrote:
On 5/12/25 16:11, Andy Shevchenko wrote:quoted
On Mon, May 12, 2025 at 04:08:35PM +0200, Thomas Richard wrote:quoted
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
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_*().Sounds good for me. Let's wait for Geert's opinoin on this.Regarding Geert's comment for patch 9/12, an other proposal for naming: As mentioned above, exported functions gpiochip_fwd_*() take a gpiochip_fwd as parameter. But for all functions corresponding to a GPIO operation add the gpio word, and for functions to add/remove GPIO descriptor add the desc word: devm_gpiochip_fwd_alloc() gpiochip_fwd_register() gpiochip_fwd_desc_add() gpiochip_fwd_desc_free() gpiochip_fwd_get_gpiochip() gpiochip_fwd_get_data() gpiochip_fwd_gpio_request() gpiochip_fwd_gpio_get_direction() gpiochip_fwd_gpio_direction_input() gpiochip_fwd_gpio_direction_output() gpiochip_fwd_gpio_get() gpiochip_fwd_gpio_set() gpiochip_fwd_gpio_set_multiple() gpiochip_fwd_gpio_get_multiple() gpiochip_fwd_gpio_set_config() gpiochip_fwd_gpio_to_irq()
Sounds good to me (from a quick glance).
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