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.