
From: Ingo Molnar <mingo@elte.hu>

ok, the patch below does the trick. It works fine on 4G and non-4G kernels
as well and dumps the expected code.



 arch/i386/kernel/traps.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff -puN arch/i386/kernel/traps.c~4g4g-show_registers-fix arch/i386/kernel/traps.c
--- 25/arch/i386/kernel/traps.c~4g4g-show_registers-fix	2003-08-03 11:57:48.000000000 -0700
+++ 25-akpm/arch/i386/kernel/traps.c	2003-08-03 11:57:48.000000000 -0700
@@ -232,9 +232,11 @@ void show_registers(struct pt_regs *regs
 
 		eip = (u8 *)regs->eip - 43;
 		for (i = 0; i < 64; i++, eip++) {
-			unsigned char c;
+			unsigned char c = 0xff;
+
+			if ((user_mode(regs) && get_user(c, eip)) ||
+			    (!user_mode(regs) && __direct_get_user(c, eip))) {
 
-			if (eip < (u8 *)PAGE_OFFSET || __get_user(c, eip)) {
 				printk(" Bad EIP value.");
 				break;
 			}

_
