• Joonsoo Kim's avatar
    mm/debug-pagealloc: correct freepage accounting and order resetting · 57cbc87e
    Joonsoo Kim authored
    One thing I did in this patch is fixing freepage accounting.  If we
    clear guard page and link it onto isolate buddy list, we should not
    increase freepage count.  This patch adds conditional branch to skip
    counting in this case.  Without this patch, this overcounting happens
    frequently if guard order is set and CMA is used.
    
    Another thing fixed in this patch is the target to reset order.  In
    __free_one_page(), we check the buddy page whether it is a guard page or
    not.  And, if so, we should clear guard attribute on the buddy page and
    reset order of it to 0.  But, current code resets original page's order
    rather than buddy one's.  Maybe, this doesn't have any problem, because
    whole merged page's order will be re-assigned soon.  But, it is better
    to correct code.
    Signed-off-by: default avatarJoonsoo Kim <iamjoonsoo.kim@lge.com>
    Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Cc: Gioh Kim <gioh.kim@lge.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    57cbc87e
page_alloc.c 182 KB