Re: [PATCH v5 08/12] gpio: aggregator: export symbols of the GPIO forwarder library
From: Thomas Richard <thomas.richard@bootlin.com>
Date: 2025-05-12 15:01:01
Also in:
linux-hardening, lkml
On 5/12/25 16:39, Geert Uytterhoeven wrote:
Hi Thomas, On Mon, 12 May 2025 at 16:08, Thomas Richard [off-list ref] 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
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.
I'm not sure to understand the question, or the idea behind the question. Regards, Thomas