[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <93425f2f-9496-4d18-ad7d-7e631a80e6cf@bootlin.com>
Date: Mon, 12 May 2025 17:00:58 +0200
From: Thomas Richard <thomas.richard@...tlin.com>
To: Geert Uytterhoeven <geert@...ux-m68k.org>
Cc: Linus Walleij <linus.walleij@...aro.org>,
Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
Bartosz Golaszewski <brgl@...ev.pl>, Kees Cook <kees@...nel.org>,
Andy Shevchenko <andy@...nel.org>, linux-gpio@...r.kernel.org,
linux-kernel@...r.kernel.org, thomas.petazzoni@...tlin.com,
DanieleCleri@...on.eu, GaryWang@...on.com.tw, linux-hardening@...r.kernel.org
Subject: Re: [PATCH v5 08/12] gpio: aggregator: export symbols of the GPIO
forwarder library
On 5/12/25 16:39, Geert Uytterhoeven wrote:
> Hi Thomas,
>
> On Mon, 12 May 2025 at 16:08, Thomas Richard <thomas.richard@...tlin.com> wrote:
>> On 5/9/25 11:07, Geert Uytterhoeven wrote:
>>> On Tue, 6 May 2025 at 17:21, Thomas Richard <thomas.richard@...tlin.com> wrote:
>>>> 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@...tlin.com>
>>
>> ...
>>
>>>> +
>>>> +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
Powered by blists - more mailing lists