diff mbox series

gpio: fix line flag validation in linehandle_create

Message ID 20190909032218.1901-1-warthog618@gmail.com
State New
Headers show
Series gpio: fix line flag validation in linehandle_create | expand

Commit Message

Kent Gibson Sept. 9, 2019, 3:22 a.m. UTC
linehandle_create should not allow both GPIOHANDLE_REQUEST_INPUT
and GPIOHANDLE_REQUEST_OUTPUT to be set.

Signed-off-by: Kent Gibson <warthog618@gmail.com>
---
 drivers/gpio/gpiolib.c | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Bartosz Golaszewski Sept. 9, 2019, 7:33 a.m. UTC | #1
pon., 9 wrz 2019 o 05:23 Kent Gibson <warthog618@gmail.com> napisaƂ(a):
>
> linehandle_create should not allow both GPIOHANDLE_REQUEST_INPUT
> and GPIOHANDLE_REQUEST_OUTPUT to be set.
>
> Signed-off-by: Kent Gibson <warthog618@gmail.com>
> ---
>  drivers/gpio/gpiolib.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
>
> diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> index cca749010cd0..7502230a4ec8 100644
> --- a/drivers/gpio/gpiolib.c
> +++ b/drivers/gpio/gpiolib.c
> @@ -535,6 +535,14 @@ static int linehandle_create(struct gpio_device *gdev, void __user *ip)
>         if (lflags & ~GPIOHANDLE_REQUEST_VALID_FLAGS)
>                 return -EINVAL;
>
> +       /*
> +        * Do not allow both INPUT & OUTPUT flags to be set as they are
> +        * contradictory.
> +        */
> +       if ((lflags & GPIOHANDLE_REQUEST_INPUT) &&
> +           (lflags & GPIOHANDLE_REQUEST_OUTPUT))
> +               return -EINVAL;
> +
>         /*
>          * Do not allow OPEN_SOURCE & OPEN_DRAIN flags in a single request. If
>          * the hardware actually supports enabling both at the same time the
> --
> 2.23.0
>

This looks good, thanks. When sending v2 (after fixing the other
patch) please do the following:

- send it to Linus and myself (addresses are listed in MAINTAINERS)
- send all patches as a single series

Thanks,
Bart
diff mbox series

Patch

diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index cca749010cd0..7502230a4ec8 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -535,6 +535,14 @@  static int linehandle_create(struct gpio_device *gdev, void __user *ip)
 	if (lflags & ~GPIOHANDLE_REQUEST_VALID_FLAGS)
 		return -EINVAL;
 
+	/*
+	 * Do not allow both INPUT & OUTPUT flags to be set as they are
+	 * contradictory.
+	 */
+	if ((lflags & GPIOHANDLE_REQUEST_INPUT) &&
+	    (lflags & GPIOHANDLE_REQUEST_OUTPUT))
+		return -EINVAL;
+
 	/*
 	 * Do not allow OPEN_SOURCE & OPEN_DRAIN flags in a single request. If
 	 * the hardware actually supports enabling both at the same time the