diff options
author | Yen-Chao Chen <davidycchen@google.com> | 2023-08-09 09:59:37 +0800 |
---|---|---|
committer | Yen-Chao Chen <davidycchen@google.com> | 2023-08-23 09:53:25 +0800 |
commit | cd42479925864d70965c1e67829e566a9e1984e5 (patch) | |
tree | a64e5ead449857fc06fe5b7cd5416e22ef59c219 | |
parent | 80fa3f4b233eccbc3a4a171ea882303c9f373d7f (diff) | |
download | fts_touch-cd42479925864d70965c1e67829e566a9e1984e5.tar.gz |
Skip handling invalid event typesandroid-u-qpr1-beta-2_r0.8
Bug: 293907307
Test: Touch works normally.
Change-Id: I73439b102ac6d6a347767b314f56fff87ba69daf
Signed-off-by: Yen-Chao Chen <davidycchen@google.com>
-rw-r--r-- | ftm5/fts.c | 5 | ||||
-rw-r--r-- | ftm5/fts_lib/ftsSoftware.h | 1 |
2 files changed, 6 insertions, 0 deletions
@@ -4007,6 +4007,11 @@ static irqreturn_t fts_interrupt_handler(int irq, void *handle) for (count = 0; count < events_remaining + 1; count++) { evt_data = &data[count * FIFO_EVENT_SIZE]; + if (!VALID_EVENT_TYPE(evt_data[0])) { + dev_err(info->dev, "Got invalid event type: %*ph\n", 8, evt_data); + goto exit; + } + switch (GET_EVENT_TYPE(evt_data[0])) { case EVT_ID_CONTROLLER_READY: case EVT_ID_ERROR: diff --git a/ftm5/fts_lib/ftsSoftware.h b/ftm5/fts_lib/ftsSoftware.h index c5adb31..9f1c30c 100644 --- a/ftm5/fts_lib/ftsSoftware.h +++ b/ftm5/fts_lib/ftsSoftware.h @@ -375,6 +375,7 @@ enum { /** @}*/ /* bit2 and bit3 are for major data so skip it. */ #define GET_EVENT_TYPE(event_data) (event_data & 0xF3) +#define VALID_EVENT_TYPE(event_data) ((event_data & 0x03) == 0x03) /* EVENT ID */ /** @defgroup events_group FW Event IDs and Types * Event IDs and Types pushed by the FW into the FIFO |