Re: [PATCH v2 2/7] Input: make sure input handlers define only one processing method

Jeff LaBundy
2024-07-07T19:53:55Z

Hi Dmitry,

On Wed, Jul 03, 2024 at 02:37:49PM -0700, Dmitry Torokhov wrote:
> Input core expects input handlers to be either filters, or regular
> handlers, but not both. Additionally, for regular handlers it does
> not make sense to define both single event method and batch method.
>
> Refuse registering handler if it defines more than one method.
>
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

Reviewed-by: Jeff LaBundy <jeff@labundy.com>

> ---
> drivers/input/input.c | 24 ++++++++++++++++++++++++
> 1 file changed, 24 insertions(+)
>
> diff --git a/drivers/input/input.c b/drivers/input/input.c
> index fd4997ba263c..7e4f8824f4fd 100644
> --- a/drivers/input/input.c
> +++ b/drivers/input/input.c
> @@ -2517,6 +2517,26 @@ void input_unregister_device(struct input_dev *dev)
> }
> EXPORT_SYMBOL(input_unregister_device);
>
> +static int input_handler_check_methods(const struct input_handler *handler)
> +{
> + int count = 0;
> +
> + if (handler->filter)
> + count++;
> + if (handler->events)
> + count++;
> + if (handler->event)
> + count++;
> +
> + if (count > 1) {
> + pr_err("%s: only one event processing method can be defined (%s)\n",
> + __func__, handler->name);
> + return -EINVAL;
> + }
> +
> + return 0;
> +}
> +
> /**
> * input_register_handler - register a new input handler
> * @handler: handler to be registered
> @@ -2530,6 +2550,10 @@ int input_register_handler(struct input_handler *handler)
> struct input_dev *dev;
> int error;
>
> + error = input_handler_check_methods(handler);
> + if (error)
> + return error;
> +
> error = mutex_lock_interruptible(&input_mutex);
> if (error)
> return error;
> --
> 2.45.2.803.g4e1b14247a-goog
>

Kind regards,
Jeff LaBundy