• Imre Deak's avatar
    ARM: 5742/1: ARM: add debug check for invalid kernel page faults · 1d212712
    Imre Deak authored
    According to the following in arch/arm/mm/fault.c page faults from
    kernel mode are invalid if mmap_sem is already held and there is
    no exception handler defined for the faulting instruction:
    
    /*
     * As per x86, we may deadlock here.  However, since the kernel only
     * validly references user space from well defined areas of the code,
     * we can bug out early if this is from code which shouldn't.
     */
    if (!down_read_trylock(&mm->mmap_sem)) {
    	if (!user_mode(regs) && !search_exception_tables(regs->ARM_pc))
    		goto no_context;
    
    Since mmap_sem can be held at arbitrary times by another thread this
    also means that any page faults from kernel mode are invalid if no
    exception handler is defined for them, regardless whether mmap_sem is
    held at the time of fault.
    
    To easier detect code that can trigger the above error, add a check
    also for the case where mmap_sem is acquired. As this has an overhead
    make it a VM debug check.
    Signed-off-by: default avatarImre Deak <imre.deak@nokia.com>
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    1d212712
fault.c 15 KB