]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Input: mms114 - fix multi-touch slot corruption
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Sat, 4 Jul 2026 06:01:12 +0000 (23:01 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Sat, 11 Jul 2026 04:37:51 +0000 (21:37 -0700)
If the touchscreen controller reports a touch ID of 0, the driver
calculates the slot ID as touch->id - 1, which underflows to UINT_MAX.
This is passed to input_mt_slot() as -1.

Since the input core ignores negative slot values, the active slot remains
unchanged. The driver then reports the touch coordinates for the previously
active slot, corrupting its state.

Fix this by rejecting touch reports with ID 0.

Fixes: 07b8481d4aff ("Input: add MELFAS mms114 touchscreen driver")
Cc: stable@vger.kernel.org
Reported-by: sashiko-bot@kernel.org
Assisted-by: Antigravity:gemini-3.5-flash
Link: https://patch.msgid.link/20260704060115.353049-1-dmitry.torokhov@gmail.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/touchscreen/mms114.c

index 53ad35d61d476c12955edff69b52b12dc44bd898..5cef97246a1584e2b2444b6dafce262bc91adf17 100644 (file)
@@ -165,7 +165,7 @@ static void mms114_process_mt(struct mms114_data *data, struct mms114_touch *tou
        unsigned int x;
        unsigned int y;
 
-       if (touch->id > MMS114_MAX_TOUCH) {
+       if (touch->id == 0 || touch->id > MMS114_MAX_TOUCH) {
                dev_err(&client->dev, "Wrong touch id (%d)\n", touch->id);
                return;
        }