From: Dmitry Mastykin Date: Tue, 24 Mar 2020 18:38:28 +0000 (-0700) Subject: Input: goodix - fix spurious key release events X-Git-Tag: v5.4.197~31 X-Git-Url: https://git.fsl.cs.sunysb.edu/?a=commitdiff_plain;h=9ce35dad5a1ac262559c0d296de049dcb5b05799;p=wrapfs-5.4.y.git Input: goodix - fix spurious key release events commit 24ef83f6e31d20fc121a7cd732b04b498475fca3 upstream. The goodix panel sends spurious interrupts after a 'finger up' event, which always cause a timeout. We were exiting the interrupt handler by reporting touch_num == 0, but this was still processed as valid and caused the code to use the uninitialised point_data, creating spurious key release events. Report an error from the interrupt handler so as to avoid processing invalid point_data further. Signed-off-by: Dmitry Mastykin Reviewed-by: Bastien Nocera Link: https://lore.kernel.org/r/20200316075302.3759-2-dmastykin@astralinux.ru Signed-off-by: Dmitry Torokhov Cc: Fabio Estevam Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c index bfb945fc33a1..3c9cdb87770f 100644 --- a/drivers/input/touchscreen/goodix.c +++ b/drivers/input/touchscreen/goodix.c @@ -335,7 +335,7 @@ static int goodix_ts_read_input_report(struct goodix_ts_data *ts, u8 *data) * The Goodix panel will send spurious interrupts after a * 'finger up' event, which will always cause a timeout. */ - return 0; + return -ENOMSG; } static void goodix_ts_report_touch_8b(struct goodix_ts_data *ts, u8 *coor_data)