[OpenBIOS] [commit] r1123 - trunk/openbios-devel/arch/sparc32
repository service
svn at openbios.org
Fri Apr 19 09:04:33 CEST 2013
Author: mcayland
Date: Fri Apr 19 09:04:32 2013
New Revision: 1123
URL: http://tracker.coreboot.org/trac/openbios/changeset/1123
Log:
SPARC32: Remove zero page mapping from MMU to enable detection of NULL pointer dereferences
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at ilande.co.uk>
Acked-by: Artyom Tarasenko <atar4qemu at gmail.com>
Modified:
trunk/openbios-devel/arch/sparc32/lib.c
trunk/openbios-devel/arch/sparc32/ofmem_sparc32.c
Modified: trunk/openbios-devel/arch/sparc32/lib.c
==============================================================================
--- trunk/openbios-devel/arch/sparc32/lib.c Fri Apr 19 09:04:25 2013 (r1122)
+++ trunk/openbios-devel/arch/sparc32/lib.c Fri Apr 19 09:04:32 2013 (r1123)
@@ -393,9 +393,9 @@
ofmem_arch_map_pages(pa, va, size, ofmem_arch_default_translation_mode(pa));
ofmem_map_page_range(pa, va, size, ofmem_arch_default_translation_mode(pa));
- // 1:1 mapping for RAM
- ofmem_arch_map_pages(0, 0, LOWMEMSZ, ofmem_arch_default_translation_mode(0));
- ofmem_map_page_range(0, 0, LOWMEMSZ, ofmem_arch_default_translation_mode(0));
+ // 1:1 mapping for RAM (don't map page 0 to allow catching of NULL dereferences)
+ ofmem_arch_map_pages(PAGE_SIZE, PAGE_SIZE, LOWMEMSZ - PAGE_SIZE, ofmem_arch_default_translation_mode(0));
+ ofmem_map_page_range(PAGE_SIZE, PAGE_SIZE, LOWMEMSZ - PAGE_SIZE, ofmem_arch_default_translation_mode(0));
/*
* Flush cache
Modified: trunk/openbios-devel/arch/sparc32/ofmem_sparc32.c
==============================================================================
--- trunk/openbios-devel/arch/sparc32/ofmem_sparc32.c Fri Apr 19 09:04:25 2013 (r1122)
+++ trunk/openbios-devel/arch/sparc32/ofmem_sparc32.c Fri Apr 19 09:04:32 2013 (r1123)
@@ -238,6 +238,9 @@
memset(&s_ofmem_data, 0, sizeof(s_ofmem_data));
s_ofmem_data.ofmem.ramsize = qemu_mem_size;
+ /* Mark the first page as non-free */
+ ofmem_claim_virt(0, PAGE_SIZE, 0);
+
/* Claim reserved physical addresses at top of RAM */
ofmem_claim_phys(ofmem_arch_get_phys_top(), s_ofmem_data.ofmem.ramsize - ofmem_arch_get_phys_top(), 0);
More information about the OpenBIOS
mailing list