diff options
author | Andrew Manison <amanison@anselsystems.com> | 2010-06-19 09:02:05 +0000 |
---|---|---|
committer | Andrew Manison <amanison@anselsystems.com> | 2010-06-19 09:02:05 +0000 |
commit | 85fd77589be2f6c970ca6895afa1520e0a2fda04 (patch) | |
tree | 6b9d172b005b2657e541424da71009dcd2a1f3c4 /main/linux-grsec/x86-setup-When-restoring-the-screen-update-boot_params-screen_info.patch | |
parent | 8fdcdf953f865c691b01d546a0baea1a1143deeb (diff) | |
parent | 253afa4a86bcb0959ca8b7fb269f482058847a9b (diff) | |
download | aports-85fd77589be2f6c970ca6895afa1520e0a2fda04.tar.bz2 aports-85fd77589be2f6c970ca6895afa1520e0a2fda04.tar.xz |
Merge remote branch 'alpine/master'
Conflicts:
main/openssl/APKBUILD
Diffstat (limited to 'main/linux-grsec/x86-setup-When-restoring-the-screen-update-boot_params-screen_info.patch')
-rw-r--r-- | main/linux-grsec/x86-setup-When-restoring-the-screen-update-boot_params-screen_info.patch | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/main/linux-grsec/x86-setup-When-restoring-the-screen-update-boot_params-screen_info.patch b/main/linux-grsec/x86-setup-When-restoring-the-screen-update-boot_params-screen_info.patch new file mode 100644 index 0000000000..a4f94d7fa4 --- /dev/null +++ b/main/linux-grsec/x86-setup-When-restoring-the-screen-update-boot_params-screen_info.patch @@ -0,0 +1,48 @@ +From f1f6baf8f1df29be38003089787e378567ce0086 Mon Sep 17 00:00:00 2001 +From: H. Peter Anvin <hpa@zytor.com> +Date: Wed, 17 Feb 2010 18:32:06 -0800 +Subject: [PATCH] x86, setup: When restoring the screen, update boot_params.screen_info + +When we restore the screen content after a mode change, we return the +cursor to its former position. However, we need to also update +boot_params.screen_info accordingly, so that the decompression code +knows where on the screen the cursor is. Just in case the video BIOS +does something extra screwy, read the cursor position back from the +BIOS instead of relying on it doing the right thing. + +While we're at it, make sure we cap the cursor position to the new +screen coordinates. + +Reported-by: Wim Osterholt <wim@djo.tudelft.nl> +Bugzilla-Reference: http://bugzilla.kernel.org/show_bug.cgi?id=15329 +Signed-off-by: H. Peter Anvin <hpa@zytor.com> +--- + arch/x86/boot/video.c | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +diff --git a/arch/x86/boot/video.c b/arch/x86/boot/video.c +index f767164..43eda28 100644 +--- a/arch/x86/boot/video.c ++++ b/arch/x86/boot/video.c +@@ -298,11 +298,18 @@ static void restore_screen(void) + } + + /* Restore cursor position */ ++ if (saved.curx >= xs) ++ saved.curx = xs-1; ++ if (saved.cury >= ys) ++ saved.cury = ys-1; ++ + initregs(&ireg); + ireg.ah = 0x02; /* Set cursor position */ + ireg.dh = saved.cury; + ireg.dl = saved.curx; + intcall(0x10, &ireg, NULL); ++ ++ store_cursor_position(); + } + + void set_video(void) +-- +1.7.1 + |