• Yaliang Wang's avatar
    MIPS: pgalloc: fix memory leak caused by pgd_free() · 2bc5bab9
    Yaliang Wang authored
    pgd page is freed by generic implementation pgd_free() since commit
    f9cb654c ("asm-generic: pgalloc: provide generic pgd_free()"),
    however, there are scenarios that the system uses more than one page as
    the pgd table, in such cases the generic implementation pgd_free() won't
    be applicable anymore. For example, when PAGE_SIZE_4KB is enabled and
    MIPS_VA_BITS_48 is not enabled in a 64bit system, the macro "PGD_ORDER"
    will be set as "1", which will cause allocating two pages as the pgd
    table. Well, at the same time, the generic implementation pgd_free()
    just free one pgd page, which will result in the memory leak.
    
    The memory leak can be easily detected by executing shell command:
    "while true; do ls > /dev/null; grep MemFree /proc/meminfo; done"
    
    Fixes: f9cb654c ("asm-generic: pgalloc: provide generic pgd_free()")
    Signed-off-by: default avatarYaliang Wang <Yaliang.Wang@windriver.com>
    Signed-off-by: default avatarThomas Bogendoerfer <tsbogend@alpha.franken.de>
    2bc5bab9
pgalloc.h 2.51 KB