Subject: CVS commit: src/sys/arch/arm/arm32
To: None <source-changes@NetBSD.org>
From: Steve Woodford <scw@netbsd.org>
List: source-changes
Date: 11/14/2003 19:00:03
Module Name:	src
Committed By:	scw
Date:		Fri Nov 14 19:00:03 UTC 2003

Modified Files:
	src/sys/arch/arm/arm32: fault.c

Log Message:
 - In data_abort_handler(), move the fault pc alignment check to before
   the call to data_abort_fixup() as the fixup routines also try to
   de-reference the fault pc.

 - If a fault came from kernel mode, and the fault address looks to be in
   the kernel's address space, and pcb_onfault is *set*, check the
   instruction which caused the fault. If it's LDR{B,}T or STR{B,}T
   then one of the copy in/out routines is trying to read/write a
   kernel address with the wrong privilege. If that address is actually
   mapped, we could end up in an infinite loop because we failed to
   notice that it's really a 'user mode' access. Yay for "crashme".
   I suspect this also fixes PR port-arm/23052.

   Note: This *could* be fixed by adding sanity checks to copyin et al,
   but that would add extra overhead to the non-error path...

 - Fix a couple of __predict_false cases.


To generate a diff of this commit:
cvs rdiff -r1.40 -r1.41 src/sys/arch/arm/arm32/fault.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.