2006-12-04 14:54:15

by Martin Schwidefsky

[permalink] [raw]
Subject: [S390] Bad kexec control page allocation.

From: Heiko Carstens <[email protected]>

[S390] Bad kexec control page allocation.

KEXEC_CONTROL_MEMORY_LIMIT is an unsigned long value and therefore
should be defined as one. Otherwise the kexec control page can be
allocated above 2GB which will cause a specification exception on the
sam31 instruction in the s390 kexec relocation code.

Signed-off-by: Heiko Carstens <[email protected]>
Signed-off-by: Martin Schwidefsky <[email protected]>
---

include/asm-s390/kexec.h | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)

diff -urpN linux-2.6/include/asm-s390/kexec.h linux-2.6-patched/include/asm-s390/kexec.h
--- linux-2.6/include/asm-s390/kexec.h 2006-11-29 22:57:37.000000000 +0100
+++ linux-2.6-patched/include/asm-s390/kexec.h 2006-12-04 14:50:48.000000000 +0100
@@ -26,7 +26,7 @@

/* Maximum address we can use for the control pages */
/* Not more than 2GB */
-#define KEXEC_CONTROL_MEMORY_LIMIT (1<<31)
+#define KEXEC_CONTROL_MEMORY_LIMIT (1UL<<31)

/* Allocate one page for the pdp and the second for the code */
#define KEXEC_CONTROL_CODE_SIZE 4096