mirror of
https://github.com/torvalds/linux.git
synced 2026-11-06 21:58:01 +01:00
Input: always accept EV_SYN in input_event()
Commit0cd5877352("Input: preallocate memory to hold event values") moved allocation of dev->vals into input_allocate_device(), which caused input core to accumulate events reported while seeding initial device state before input_register_device(). However, because EV_SYN is only set in dev->evbit during input_register_device() (and some drivers also overwrite dev->evbit directly before registration), any EV_SYN/SYN_REPORT events sent before registration were dropped by is_event_supported(), leaving those seeded events stuck in dev->vals until the next SYN_REPORT after registration. Always accept EV_SYN in input_event() and input_inject_event() without checking dev->evbit so input_sync() flushes dev->vals as intended. Reported-by: Karlos Abel <kabel@voidship.net>, Fixes:0cd5877352("Input: preallocate memory to hold event values") Cc: stable@vger.kernel.org Assisted-by: LLM Acked-by: Jiri Kosina <jkosina@suse.com> Link: https://patch.msgid.link/asx50uz6iafsyAd5@google.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
This commit is contained in:
parent
6c9063f788
commit
c1d13bfdb9
|
|
@ -391,7 +391,7 @@ void input_handle_event(struct input_dev *dev,
|
|||
void input_event(struct input_dev *dev,
|
||||
unsigned int type, unsigned int code, int value)
|
||||
{
|
||||
if (is_event_supported(type, dev->evbit, EV_MAX)) {
|
||||
if (type == EV_SYN || is_event_supported(type, dev->evbit, EV_MAX)) {
|
||||
guard(spinlock_irqsave)(&dev->event_lock);
|
||||
input_handle_event(dev, type, code, value);
|
||||
}
|
||||
|
|
@ -415,7 +415,7 @@ void input_inject_event(struct input_handle *handle,
|
|||
struct input_dev *dev = handle->dev;
|
||||
struct input_handle *grab;
|
||||
|
||||
if (is_event_supported(type, dev->evbit, EV_MAX)) {
|
||||
if (type == EV_SYN || is_event_supported(type, dev->evbit, EV_MAX)) {
|
||||
guard(spinlock_irqsave)(&dev->event_lock);
|
||||
guard(rcu)();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user