Re: [PATCH 4/5] gpiolib: simplify notifying user-space about line requests

From: Kent Gibson
Date: Fri Oct 04 2024 - 23:46:21 EST


On Fri, Oct 04, 2024 at 04:43:25PM +0200, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>
>
> Instead of emitting the line state change event on request in three
> different places, just do it once, closer to the source: in
> gpiod_request_commit().
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>
> ---
> drivers/gpio/gpiolib-cdev.c | 6 ------
> drivers/gpio/gpiolib.c | 4 ++--
> 2 files changed, 2 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpio/gpiolib-cdev.c b/drivers/gpio/gpiolib-cdev.c
> index b0050250ac3a..f614a981253d 100644
> --- a/drivers/gpio/gpiolib-cdev.c
> +++ b/drivers/gpio/gpiolib-cdev.c
> @@ -372,8 +372,6 @@ static int linehandle_create(struct gpio_device *gdev, void __user *ip)
> goto out_free_lh;
> }
>
> - gpiod_line_state_notify(desc, GPIO_V2_LINE_CHANGED_REQUESTED);
> -
> dev_dbg(&gdev->dev, "registered chardev handle for line %d\n",
> offset);

This moves the notify to before the desc->flags have been set.
So the notified will now see the flags as previously set, not what they
have been requested as.

That might be acceptible if you subsequently issue GPIO_V2_LINE_CHANGED_CONFIG
when the flags are set, but that is not done here and you explicitly don't
notify from here in patch 5 when you add notifying to gpiod_direction_output()
etc.

Cheers,
Kent.