summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2010-06-08 13:40:32 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2010-06-08 14:36:56 +0000
commit54f50864ba74d0c4c63fdc7167f9ff8aac0510f9 (patch)
treec276d219235283de4d25b527731e74a5a758eb52
parentc9fa4d6d35b47255fe92924684caa86c9c3d2c67 (diff)
downloadaports-54f50864ba74d0c4c63fdc7167f9ff8aac0510f9.tar.bz2
aports-54f50864ba74d0c4c63fdc7167f9ff8aac0510f9.tar.xz
main/linux-grsec: fix clearing of screen at boot
fixes #339 (cherry picked from commit 2214577d304e6e0099a902315981d0b908b1b818)
-rw-r--r--main/linux-grsec/APKBUILD4
-rw-r--r--main/linux-grsec/x86-setup-When-restoring-the-screen-update-boot_params-screen_info.patch48
2 files changed, 51 insertions, 1 deletions
diff --git a/main/linux-grsec/APKBUILD b/main/linux-grsec/APKBUILD
index c2fa87917..48464c106 100644
--- a/main/linux-grsec/APKBUILD
+++ b/main/linux-grsec/APKBUILD
@@ -4,7 +4,7 @@ _flavor=grsec
pkgname=linux-${_flavor}
pkgver=2.6.32.15
_kernver=2.6.32
-pkgrel=1
+pkgrel=2
pkgdesc="Linux kernel with grsecurity"
url=http://grsecurity.net
depends="mkinitfs linux-firmware"
@@ -32,6 +32,7 @@ source="ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$_kernver.tar.bz2
0018-xfrm-Fix-crashes-in-xfrm_lookup.patch
xfrm-fix-policy-unreferencing-on-larval-drop.patch
r8169-fix-random-mdio_write-failures.patch
+ x86-setup-When-restoring-the-screen-update-boot_params-screen_info.patch
kernelconfig.x86
"
subpackages="$pkgname-dev linux-firmware:firmware"
@@ -159,4 +160,5 @@ c09b82b89a49ba2a3836a0bc3a3312f4 0015-xfrm-cache-bundles-instead-of-policies-fo
45a676c7a1759fec60b724d557b4e295 0018-xfrm-Fix-crashes-in-xfrm_lookup.patch
c7e606c11c05ff03012b21c3fe0ece47 xfrm-fix-policy-unreferencing-on-larval-drop.patch
ce4a74190febe13713bab1b886dd5bee r8169-fix-random-mdio_write-failures.patch
+a1bcf76870b63a4a4035a8948fb758e2 x86-setup-When-restoring-the-screen-update-boot_params-screen_info.patch
442d7174a9755ed7bba22ebd4918bbe5 kernelconfig.x86"
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 000000000..a4f94d7fa
--- /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
+