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 401e38be1f78..66ac9c926200 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c | |||
@@ -458,3 +458,24 @@ unsigned long arch_randomize_brk(struct mm_struct *mm) | |||
458 | unsigned long range_end = mm->brk + 0x02000000; | 458 | unsigned long range_end = mm->brk + 0x02000000; |
459 | return randomize_range(mm->brk, range_end, 0) ? : mm->brk; | 459 | return randomize_range(mm->brk, range_end, 0) ? : mm->brk; |
460 | } | 460 | } |
461 | |||
462 | /* | ||
463 | * The vectors page is always readable from user space for the | ||
464 | * atomic helpers and the signal restart code. Let's declare a mapping | ||
465 | * for it so it is visible through ptrace and /proc/<pid>/mem. | ||
466 | */ | ||
467 | |||
468 | int vectors_user_mapping(void) | ||
469 | { | ||
470 | struct mm_struct *mm = current->mm; | ||
471 | return install_special_mapping(mm, 0xffff0000, PAGE_SIZE, | ||
472 | VM_READ | VM_EXEC | | ||
473 | VM_MAYREAD | VM_MAYEXEC | | ||
474 | VM_ALWAYSDUMP | VM_RESERVED, | ||
475 | NULL); | ||
476 | } | ||
477 | |||
478 | const char *arch_vma_name(struct vm_area_struct *vma) | ||
479 | { | ||
480 | return (vma->vm_start == 0xffff0000) ? "[vectors]" : NULL; | ||
481 | } | ||