• Hugh Dickins's avatar
    [PATCH] mm: arm ready for split ptlock · 69b04754
    Hugh Dickins authored
    Prepare arm for the split page_table_lock: three issues.
    
    Signal handling's preserve and restore of iwmmxt context currently involves
    reading and writing that context to and from user space, while holding
    page_table_lock to secure the user page(s) against kswapd.  If we split the
    lock, then the structure might span two pages, secured by to read into and
    write from a kernel stack buffer, copying that out and in without locking (the
    structure is 160 bytes in size, and here we're near the top of the kernel
    stack).  Or would the overhead be noticeable?
    
    arm_syscall's cmpxchg emulation use pte_offset_map_lock, instead of
    pte_offset_map and mm-wide page_table_lock; and strictly, it should now also
    take mmap_sem before descending to pmd, to guard against another thread
    munmapping, and the page table pulled out beneath this thread.
    
    Updated two comments in fault-armv.c.  adjust_pte is interesting, since its
    modification of a pte in one part of the mm depends on the lock held when
    calling update_mmu_cache for a pte in some other part of that mm.  This can't
    be done with a split page_table_lock (and we've already taken the lowest lock
    in the hierarchy here): so we'll have to disable split on arm, unless
    CONFIG_CPU_CACHE_VIPT to ensures adjust_pte never used.
    Signed-off-by: default avatarHugh Dickins <hugh@veritas.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    69b04754
signal.c 17.9 KB