• Jonathan Austin's avatar
    ARM: 7499/1: mm: Fix vmalloc overlap check for !HIGHMEM · 36418c51
    Jonathan Austin authored
    With !HIGHMEM, sanity_check_meminfo checks for banks that completely or
    partially overlap the vmalloc region. The test for partial overlap checks
    __va(bank->start + bank->size) > vmalloc_min. This is not appropriate if
    there is a non-linear translation between virtual and physical addresses,
    as bank->start + bank->size is actually in the bank following the one being
    interrogated.
    
    In most cases, even when using SPARSEMEM, this is not problematic as the
    subsequent bank will start at a higher va than the one in question. However
    if the physical to virtual address conversion is not monotonic increasing,
    the incorrect test could result in a bank not being truncated when it
    should be.
    
    This patch ensures we perform the va-pa conversion on memory from the
    bank we are interested in, not the following one.
    Reported-by: default avatar??? (Steve) <zhanzhenbo@gmail.com>
    Signed-off-by: default avatarJonathan Austin <jonathan.austin@arm.com>
    Acked-by: default avatarNicolas Pitre <nico@linaro.org>
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    36418c51
mmu.c 32.5 KB