diff options
Diffstat (limited to 'arch/arm/kernel/process.c')
-rw-r--r-- | arch/arm/kernel/process.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 3af34bf4f4df..e76fcaadce03 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c | |||
@@ -482,3 +482,24 @@ unsigned long arch_randomize_brk(struct mm_struct *mm) | |||
482 | unsigned long range_end = mm->brk + 0x02000000; | 482 | unsigned long range_end = mm->brk + 0x02000000; |
483 | return randomize_range(mm->brk, range_end, 0) ? : mm->brk; | 483 | return randomize_range(mm->brk, range_end, 0) ? : mm->brk; |
484 | } | 484 | } |
485 | |||
486 | /* | ||
487 | * The vectors page is always readable from user space for the | ||
488 | * atomic helpers and the signal restart code. Let's declare a mapping | ||
489 | * for it so it is visible through ptrace and /proc/<pid>/mem. | ||
490 | */ | ||
491 | |||
492 | int vectors_user_mapping(void) | ||
493 | { | ||
494 | struct mm_struct *mm = current->mm; | ||
495 | return install_special_mapping(mm, 0xffff0000, PAGE_SIZE, | ||
496 | VM_READ | VM_EXEC | | ||
497 | VM_MAYREAD | VM_MAYEXEC | | ||
498 | VM_ALWAYSDUMP | VM_RESERVED, | ||
499 | NULL); | ||
500 | } | ||
501 | |||
502 | const char *arch_vma_name(struct vm_area_struct *vma) | ||
503 | { | ||
504 | return (vma->vm_start == 0xffff0000) ? "[vectors]" : NULL; | ||
505 | } | ||