kernel_samsung_a53x/drivers/input
Dmitry Torokhov 589d11af68 Input: try trimming too long modalias strings
commit 0774d19038c496f0c3602fb505c43e1b2d8eed85 upstream.

If an input device declares too many capability bits then modalias
string for such device may become too long and not fit into uevent
buffer, resulting in failure of sending said uevent. This, in turn,
may prevent userspace from recognizing existence of such devices.

This is typically not a concern for real hardware devices as they have
limited number of keys, but happen with synthetic devices such as
ones created by xen-kbdfront driver, which creates devices as being
capable of delivering all possible keys, since it doesn't know what
keys the backend may produce.

To deal with such devices input core will attempt to trim key data,
in the hope that the rest of modalias string will fit in the given
buffer. When trimming key data it will indicate that it is not
complete by placing "+," sign, resulting in conversions like this:

old: k71,72,73,74,78,7A,7B,7C,7D,8E,9E,A4,AD,E0,E1,E4,F8,174,
new: k71,72,73,74,78,7A,7B,7C,+,

This should allow existing udev rules continue to work with existing
devices, and will also allow writing more complex rules that would
recognize trimmed modalias and check input device characteristics by
other means (for example by parsing KEY= data in uevent or parsing
input device sysfs attributes).

Note that the driver core may try adding more uevent environment
variables once input core is done adding its own, so when forming
modalias we can not use the entire available buffer, so we reduce
it by somewhat an arbitrary amount (96 bytes).

Reported-by: Jason Andryuk <jandryuk@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Tested-by: Jason Andryuk <jandryuk@gmail.com>
Link: https://lore.kernel.org/r/ZjAWMQCJdrxZkvkB@google.com
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
2024-11-19 14:19:02 +01:00
..
gameport Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
input_boost Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
joystick Input: xpad - add Razer Wolverine V2 support 2024-11-18 12:12:17 +01:00
keyboard Input: gpio_keys_polled - suppress deferred probe error for gpio 2024-11-19 08:44:36 +01:00
misc Input: pm8xxx-vibrator - correct VIB_MAX_LEVELS calculation 2024-11-19 12:27:05 +01:00
mouse Input: synaptics-rmi4 - handle reset delay when using SMBus trsnsport 2024-11-18 10:58:46 +01:00
rmi4 Input: synaptics-rmi4 - fail probing if memory allocation for "phys" fails 2024-11-19 09:23:14 +01:00
sec_input Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
serio Input: ioc3kbd - add device table 2024-11-19 12:27:05 +01:00
tablet Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
touchscreen Input: goodix - ensure int GPIO is in input for gpio_count == 1 && gpio_int_idx == 0 case 2024-11-08 11:25:50 +01:00
apm-power.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
evbug.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
evdev.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ff-core.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ff-memless.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
input-compat.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
input-compat.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
input-leds.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
input-mt.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
input-polldev.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
input-poller.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
input-poller.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
input.c Input: try trimming too long modalias strings 2024-11-19 14:19:02 +01:00
joydev.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
matrix-keymap.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mousedev.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sparse-keymap.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00