• Haifeng Xu's avatar
    fork: optimize memcg_charge_kernel_stack() a bit · 4e2f6342
    Haifeng Xu authored
    Since commit f1c1a9ee ("fork: Move memcg_charge_kernel_stack()
    into CONFIG_VMAP_STACK"), memcg_charge_kernel_stack() has been moved
    into CONFIG_VMAP_STACK block, so the CONFIG_VMAP_STACK check can be
    removed.
    
    Furthermore, memcg_charge_kernel_stack() is only invoked by
    alloc_thread_stack_node() instead of dup_task_struct(). If
    memcg_kmem_charge_page() fails, the uncharge process is handled in
    memcg_charge_kernel_stack() itself instead of free_thread_stack(),
    so remove the incorrect comments.
    
    If memcg_charge_kernel_stack() fails to charge pages used by kernel
    stack, only charged pages need to be uncharged. It's unnecessary to
    uncharge those pages which memory cgroup pointer is NULL.
    
    [akpm@linux-foundation.org: remove assertion that PAGE_SIZE is a multiple of 1k]
    Link: https://lkml.kernel.org/r/20230508064458.32855-1-haifeng.xu@shopee.comSigned-off-by: default avatarHaifeng Xu <haifeng.xu@shopee.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Daniel Bristot de Oliveira <bristot@kernel.org>
    Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    4e2f6342
fork.c 87.4 KB