From: dimaaac <dimadrumspro@xxxxxxxxx> The previous code lacked proper synchronization, leading to potential data corruption and crashes. Added a spin lock to protect shared variable 'scrollback_delta' to prevent concurrent access. Signed-off-by: dimaaac <dimaac@xxxxx> --- drivers/tty/vt/vt.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c index 5c47f77804f0..29cf7fe11662 100644 --- a/drivers/tty/vt/vt.c +++ b/drivers/tty/vt/vt.c @@ -301,12 +301,13 @@ static inline unsigned short *screenpos(const struct vc_data *vc, int offset, } /* Called from the keyboard irq path.. */ +static DEFINE_SPINLOCK(scrolldelta_lock); + static inline void scrolldelta(int lines) { - /* FIXME */ - /* scrolldelta needs some kind of consistency lock, but the BKL was - and still is not protecting versus the scheduled back end */ + spin_lock(&scrolldelta_lock); scrollback_delta += lines; + spin_unlock(&scrolldelta_lock); schedule_console_callback(); } -- 2.42.0