]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Input: ilitek_ts_i2c - add report id message validation
authorEmanuele Ghidoli <emanuele.ghidoli@toradex.com>
Mon, 5 Aug 2024 08:55:11 +0000 (10:55 +0200)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Mon, 5 Aug 2024 17:39:20 +0000 (10:39 -0700)
Ensure that the touchscreen response has correct "report id" byte
before processing the touch data and discard other messages.

Fixes: 42370681bd46 ("Input: Add support for ILITEK Lego Series")
Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Link: https://lore.kernel.org/r/20240805085511.43955-3-francesco@dolcini.it
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/touchscreen/ilitek_ts_i2c.c

index e1849185e18c718902a98cd2799745a98928d3be..5a807ad723190dd444cdaf30b2b545c999434bb7 100644 (file)
@@ -37,6 +37,8 @@
 #define ILITEK_TP_CMD_GET_MCU_VER                      0x61
 #define ILITEK_TP_CMD_GET_IC_MODE                      0xC0
 
+#define ILITEK_TP_I2C_REPORT_ID                                0x48
+
 #define REPORT_COUNT_ADDRESS                           61
 #define ILITEK_SUPPORT_MAX_POINT                       40
 
@@ -163,6 +165,11 @@ static int ilitek_process_and_report_v6(struct ilitek_ts_data *ts)
                return error;
        }
 
+       if (buf[0] != ILITEK_TP_I2C_REPORT_ID) {
+               dev_err(dev, "get touch info failed. Wrong id: 0x%02X\n", buf[0]);
+               return -EINVAL;
+       }
+
        report_max_point = buf[REPORT_COUNT_ADDRESS];
        if (report_max_point > ts->max_tp) {
                dev_err(dev, "FW report max point:%d > panel info. max:%d\n",