aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mm
diff options
context:
space:
mode:
authorJulia Lawall <julia@diku.dk>2008-12-01 17:15:41 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2008-12-14 07:05:03 -0500
commit6ce1b871db6a3ca69ed1e35956d89d3cacd7ba08 (patch)
treefa3a1d73cc601de707ec21dad485319d42f7bfb5 /arch/arm/mm
parentd517cab1c7fc92178e11c7ded2548b06b273d293 (diff)
[ARM] eliminate NULL test and memset after alloc_bootmem
As noted by Akinobu Mita in patch b1fceac2b9e04d278316b2faddf276015fc06e3b, alloc_bootmem and related functions never return NULL and always return a zeroed region of memory. Thus a NULL test or memset after calls to these functions is unnecessary. This was fixed using the following semantic patch. (http://www.emn.fr/x-info/coccinelle/) // <smpl> @@ expression E; statement S; @@ E = \(alloc_bootmem\|alloc_bootmem_low\|alloc_bootmem_pages\|alloc_bootmem_low_pages\|alloc_bootmem_node\|alloc_bootmem_low_pages_node\|alloc_bootmem_pages_node\)(...) ... when != E ( - BUG_ON (E == NULL); | - if (E == NULL) S ) @@ expression E,E1; @@ E = \(alloc_bootmem\|alloc_bootmem_low\|alloc_bootmem_pages\|alloc_bootmem_low_pages\|alloc_bootmem_node\|alloc_bootmem_low_pages_node\|alloc_bootmem_pages_node\)(...) ... when != E - memset(E,0,E1); // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Cc: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm')
-rw-r--r--arch/arm/mm/mmu.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index 2ab5f962a05..9b36c5cb5e9 100644
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
@@ -827,7 +827,6 @@ static void __init devicemaps_init(struct machine_desc *mdesc)
827 * Allocate the vector page early. 827 * Allocate the vector page early.
828 */ 828 */
829 vectors = alloc_bootmem_low_pages(PAGE_SIZE); 829 vectors = alloc_bootmem_low_pages(PAGE_SIZE);
830 BUG_ON(!vectors);
831 830
832 for (addr = VMALLOC_END; addr; addr += PGDIR_SIZE) 831 for (addr = VMALLOC_END; addr; addr += PGDIR_SIZE)
833 pmd_clear(pmd_off_k(addr)); 832 pmd_clear(pmd_off_k(addr));
@@ -912,10 +911,10 @@ void __init paging_init(struct machine_desc *mdesc)
912 top_pmd = pmd_off_k(0xffff0000); 911 top_pmd = pmd_off_k(0xffff0000);
913 912
914 /* 913 /*
915 * allocate the zero page. Note that we count on this going ok. 914 * allocate the zero page. Note that this always succeeds and
915 * returns a zeroed result.
916 */ 916 */
917 zero_page = alloc_bootmem_low_pages(PAGE_SIZE); 917 zero_page = alloc_bootmem_low_pages(PAGE_SIZE);
918 memset(zero_page, 0, PAGE_SIZE);
919 empty_zero_page = virt_to_page(zero_page); 918 empty_zero_page = virt_to_page(zero_page);
920 flush_dcache_page(empty_zero_page); 919 flush_dcache_page(empty_zero_page);
921} 920}