Revert "vgacon: Add check for vc_origin address range in vgacon_scroll()"
authorHelge Deller <deller@gmx.de>
Sat, 2 Aug 2025 19:34:37 +0000 (21:34 +0200)
committerHelge Deller <deller@gmx.de>
Sat, 2 Aug 2025 19:47:33 +0000 (21:47 +0200)
This reverts commit 864f9963ec6b4b76d104d595ba28110b87158003.

The patch is wrong as it checks vc_origin against vc_screenbuf,
while in text mode it should compare against vga_vram_base.

As such it broke VGA text scrolling, which can be reproduced like this:
(1) boot a kernel that is configured to use text mode VGA-console
(2) type commands:  ls -l /usr/bin | less -S
(3) scroll up/down with cursor-down/up keys

Reported-by: Jari Ruusu <jariruusu@protonmail.com>
Cc: stable@vger.kernel.org
Cc: Yi Yang <yiyang13@huawei.com>
Cc: GONG Ruiqi <gongruiqi1@huawei.com>
Signed-off-by: Helge Deller <deller@gmx.de>
drivers/video/console/vgacon.c

index f9cdbf8c53e34b7d026f1fc4dd392d4ed9bd88b6..37bd18730fe0dfeaa7866bec640f3ab92c9b6ba3 100644 (file)
@@ -1168,7 +1168,7 @@ static bool vgacon_scroll(struct vc_data *c, unsigned int t, unsigned int b,
                                     c->vc_screenbuf_size - delta);
                        c->vc_origin = vga_vram_end - c->vc_screenbuf_size;
                        vga_rolled_over = 0;
-               } else if (oldo - delta >= (unsigned long)c->vc_screenbuf)
+               } else
                        c->vc_origin -= delta;
                c->vc_scr_end = c->vc_origin + c->vc_screenbuf_size;
                scr_memsetw((u16 *) (c->vc_origin), c->vc_video_erase_char,