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@xxxxxxxxx> Reviewed-by: Jeff LaBundy <jeff@xxxxxxxxxxx> > --- > 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