
From: Andi Kleen <ak@muc.de>

Don't pass CR2 address on alignment faults.  They report the address of the
last page fault, which is a information leak.  

Fix this for i386 and x86-64 by passing 0 instead.

Pointed out by Zachary Amsden <zach@vmware.com>

Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/arch/i386/kernel/traps.c   |    2 +-
 25-akpm/arch/x86_64/kernel/traps.c |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff -puN arch/i386/kernel/traps.c~x86-64-x86-dont-pass-cr2-on-alignment-faults arch/i386/kernel/traps.c
--- 25/arch/i386/kernel/traps.c~x86-64-x86-dont-pass-cr2-on-alignment-faults	Tue Sep 14 17:04:12 2004
+++ 25-akpm/arch/i386/kernel/traps.c	Tue Sep 14 17:04:12 2004
@@ -520,7 +520,7 @@ DO_ERROR( 9, SIGFPE,  "coprocessor segme
 DO_ERROR(10, SIGSEGV, "invalid TSS", invalid_TSS)
 DO_ERROR(11, SIGBUS,  "segment not present", segment_not_present)
 DO_ERROR(12, SIGBUS,  "stack segment", stack_segment)
-DO_ERROR_INFO(17, SIGBUS, "alignment check", alignment_check, BUS_ADRALN, get_cr2())
+DO_ERROR_INFO(17, SIGBUS, "alignment check", alignment_check, BUS_ADRALN, 0)
 
 asmlinkage void do_general_protection(struct pt_regs * regs, long error_code)
 {
diff -puN arch/x86_64/kernel/traps.c~x86-64-x86-dont-pass-cr2-on-alignment-faults arch/x86_64/kernel/traps.c
--- 25/arch/x86_64/kernel/traps.c~x86-64-x86-dont-pass-cr2-on-alignment-faults	Tue Sep 14 17:04:12 2004
+++ 25-akpm/arch/x86_64/kernel/traps.c	Tue Sep 14 17:04:12 2004
@@ -466,7 +466,7 @@ DO_ERROR( 7, SIGSEGV, "device not availa
 DO_ERROR( 9, SIGFPE,  "coprocessor segment overrun", coprocessor_segment_overrun)
 DO_ERROR(10, SIGSEGV, "invalid TSS", invalid_TSS)
 DO_ERROR(11, SIGBUS,  "segment not present", segment_not_present)
-DO_ERROR_INFO(17, SIGBUS, "alignment check", alignment_check, BUS_ADRALN, get_cr2())
+DO_ERROR_INFO(17, SIGBUS, "alignment check", alignment_check, BUS_ADRALN, 0)
 DO_ERROR(18, SIGSEGV, "reserved", reserved)
 
 #define DO_ERROR_STACK(trapnr, signr, str, name) \
_
