diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2011-06-30 01:23:59 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2011-06-30 01:23:59 -0400 |
commit | 6da49a292534d31ca391928ea97f8225774dc1e0 (patch) | |
tree | 060c5f5f40dceb10d4528763bc7fc1ccc88210d9 /arch/powerpc/mm | |
parent | 17bdc6c0e979ae61879806e4dd93ec3b169d0931 (diff) | |
parent | ca56a95eedcc95f8fea7b49c87565cd961d74fe2 (diff) |
Merge remote branch 'origin/master' into next
Diffstat (limited to 'arch/powerpc/mm')
-rw-r--r-- | arch/powerpc/mm/fault.c | 10 | ||||
-rw-r--r-- | arch/powerpc/mm/init_32.c | 15 | ||||
-rw-r--r-- | arch/powerpc/mm/init_64.c | 14 | ||||
-rw-r--r-- | arch/powerpc/mm/mem.c | 19 |
4 files changed, 24 insertions, 34 deletions
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c index 54f4fb994e99..ad35f66c69e8 100644 --- a/arch/powerpc/mm/fault.c +++ b/arch/powerpc/mm/fault.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/kdebug.h> | 31 | #include <linux/kdebug.h> |
32 | #include <linux/perf_event.h> | 32 | #include <linux/perf_event.h> |
33 | #include <linux/magic.h> | 33 | #include <linux/magic.h> |
34 | #include <linux/ratelimit.h> | ||
34 | 35 | ||
35 | #include <asm/firmware.h> | 36 | #include <asm/firmware.h> |
36 | #include <asm/page.h> | 37 | #include <asm/page.h> |
@@ -346,11 +347,10 @@ bad_area_nosemaphore: | |||
346 | return 0; | 347 | return 0; |
347 | } | 348 | } |
348 | 349 | ||
349 | if (is_exec && (error_code & DSISR_PROTFAULT) | 350 | if (is_exec && (error_code & DSISR_PROTFAULT)) |
350 | && printk_ratelimit()) | 351 | printk_ratelimited(KERN_CRIT "kernel tried to execute NX-protected" |
351 | printk(KERN_CRIT "kernel tried to execute NX-protected" | 352 | " page (%lx) - exploit attempt? (uid: %d)\n", |
352 | " page (%lx) - exploit attempt? (uid: %d)\n", | 353 | address, current_uid()); |
353 | address, current_uid()); | ||
354 | 354 | ||
355 | return SIGSEGV; | 355 | return SIGSEGV; |
356 | 356 | ||
diff --git a/arch/powerpc/mm/init_32.c b/arch/powerpc/mm/init_32.c index d65b591e5556..5de0f254dbb5 100644 --- a/arch/powerpc/mm/init_32.c +++ b/arch/powerpc/mm/init_32.c | |||
@@ -223,21 +223,6 @@ void free_initmem(void) | |||
223 | #undef FREESEC | 223 | #undef FREESEC |
224 | } | 224 | } |
225 | 225 | ||
226 | #ifdef CONFIG_BLK_DEV_INITRD | ||
227 | void free_initrd_mem(unsigned long start, unsigned long end) | ||
228 | { | ||
229 | if (start < end) | ||
230 | printk ("Freeing initrd memory: %ldk freed\n", (end - start) >> 10); | ||
231 | for (; start < end; start += PAGE_SIZE) { | ||
232 | ClearPageReserved(virt_to_page(start)); | ||
233 | init_page_count(virt_to_page(start)); | ||
234 | free_page(start); | ||
235 | totalram_pages++; | ||
236 | } | ||
237 | } | ||
238 | #endif | ||
239 | |||
240 | |||
241 | #ifdef CONFIG_8xx /* No 8xx specific .c file to put that in ... */ | 226 | #ifdef CONFIG_8xx /* No 8xx specific .c file to put that in ... */ |
242 | void setup_initial_memory_limit(phys_addr_t first_memblock_base, | 227 | void setup_initial_memory_limit(phys_addr_t first_memblock_base, |
243 | phys_addr_t first_memblock_size) | 228 | phys_addr_t first_memblock_size) |
diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c index 6374b2196a17..f6dbb4c20e64 100644 --- a/arch/powerpc/mm/init_64.c +++ b/arch/powerpc/mm/init_64.c | |||
@@ -99,20 +99,6 @@ void free_initmem(void) | |||
99 | ((unsigned long)__init_end - (unsigned long)__init_begin) >> 10); | 99 | ((unsigned long)__init_end - (unsigned long)__init_begin) >> 10); |
100 | } | 100 | } |
101 | 101 | ||
102 | #ifdef CONFIG_BLK_DEV_INITRD | ||
103 | void free_initrd_mem(unsigned long start, unsigned long end) | ||
104 | { | ||
105 | if (start < end) | ||
106 | printk ("Freeing initrd memory: %ldk freed\n", (end - start) >> 10); | ||
107 | for (; start < end; start += PAGE_SIZE) { | ||
108 | ClearPageReserved(virt_to_page(start)); | ||
109 | init_page_count(virt_to_page(start)); | ||
110 | free_page(start); | ||
111 | totalram_pages++; | ||
112 | } | ||
113 | } | ||
114 | #endif | ||
115 | |||
116 | static void pgd_ctor(void *addr) | 102 | static void pgd_ctor(void *addr) |
117 | { | 103 | { |
118 | memset(addr, 0, PGD_TABLE_SIZE); | 104 | memset(addr, 0, PGD_TABLE_SIZE); |
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index 097b288779e2..89cbfef5a7dd 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c | |||
@@ -383,6 +383,25 @@ void __init mem_init(void) | |||
383 | mem_init_done = 1; | 383 | mem_init_done = 1; |
384 | } | 384 | } |
385 | 385 | ||
386 | #ifdef CONFIG_BLK_DEV_INITRD | ||
387 | void __init free_initrd_mem(unsigned long start, unsigned long end) | ||
388 | { | ||
389 | if (start >= end) | ||
390 | return; | ||
391 | |||
392 | start = _ALIGN_DOWN(start, PAGE_SIZE); | ||
393 | end = _ALIGN_UP(end, PAGE_SIZE); | ||
394 | pr_info("Freeing initrd memory: %ldk freed\n", (end - start) >> 10); | ||
395 | |||
396 | for (; start < end; start += PAGE_SIZE) { | ||
397 | ClearPageReserved(virt_to_page(start)); | ||
398 | init_page_count(virt_to_page(start)); | ||
399 | free_page(start); | ||
400 | totalram_pages++; | ||
401 | } | ||
402 | } | ||
403 | #endif | ||
404 | |||
386 | /* | 405 | /* |
387 | * This is called when a page has been modified by the kernel. | 406 | * This is called when a page has been modified by the kernel. |
388 | * It just marks the page as not i-cache clean. We do the i-cache | 407 | * It just marks the page as not i-cache clean. We do the i-cache |