aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
authorXu Rao <raoxu@uniontech.com>2026-06-24 17:47:39 +0800
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2026-06-26 22:42:56 -0700
commitd86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f (patch)
treeb18acec840133546891403ae5ecc78b7e1b54550 /drivers
parent2d6d33e45dd4fb768758d5f6e747deadcd66b9fc (diff)
downloadath-d86d4f8cbb5a55a3b9b86f7b5ab8c4cdda600a3f.tar.gz
Input: gscps2 - advance receive buffer write index
Commit 44f920069911 ("Input: gscps2 - use guard notation when acquiring spinlock") moved the receive loop into gscps2_read_data() and gscps2_report_data(). While moving the code, it preserved the writes to buffer[ps2port->append], but omitted the following producer index update from the original loop: ps2port->append = (ps2port->append + 1) & BUFFER_SIZE; As a result, append never advances. Since gscps2_report_data() only reports bytes while act != append, the receive buffer always appears empty and no keyboard or mouse data reaches the serio core. Restore the omitted index update. Fixes: 44f920069911 ("Input: gscps2 - use guard notation when acquiring spinlock") Cc: stable@vger.kernel.org # 6.13+ Signed-off-by: Xu Rao <raoxu@uniontech.com> Link: https://patch.msgid.link/460B5655BA580C60+20260624094739.850306-1-raoxu@uniontech.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/input/serio/gscps2.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/input/serio/gscps2.c b/drivers/input/serio/gscps2.c
index 22b2f57fd91f5..bf9b993f57330 100644
--- a/drivers/input/serio/gscps2.c
+++ b/drivers/input/serio/gscps2.c
@@ -219,6 +219,7 @@ static void gscps2_read_data(struct gscps2port *ps2port)
ps2port->buffer[ps2port->append].str = status;
ps2port->buffer[ps2port->append].data =
gscps2_readb_input(ps2port->addr);
+ ps2port->append = (ps2port->append + 1) & BUFFER_SIZE;
} while (true);
}