kernel virtual memory access (from app) does not generate segfault
Jamie Lokier
jamie at shareable.org
Wed Apr 21 15:45:40 EDT 2010
anfei wrote:
> ARM: Proper prefetch abort handling on pre-ARMv6
>
> Instruction faults on pre-ARMv6 CPUs are interpreted as
> a 'translation fault', but do_translation_fault doesn't
> handle well if user mode trying to run instruction above
> TASK_SIZE, and result in the infinite retry of that
> instruction.
>
> Signed-off-by: Anfei Zhou <anfei.zhou at gmail.com>
> ---
> arch/arm/mm/fault.c | 3 +++
> 1 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
> index 9d40c34..8ad75e9 100644
> --- a/arch/arm/mm/fault.c
> +++ b/arch/arm/mm/fault.c
> @@ -393,6 +393,9 @@ do_translation_fault(unsigned long addr, unsigned int fsr,
> if (addr < TASK_SIZE)
> return do_page_fault(addr, fsr, regs);
>
> + if (user_mode(regs))
> + goto bad_area;
> +
> index = pgd_index(addr);
>
> /*
Looks good to me.
Reviewed-by: Jamie Lokier <jamie at shareable.org>
-- Jamie
More information about the linux-arm-kernel
mailing list