• Oscar Salvador's avatar
    mm,page_owner: fix recursion · 7844c014
    Oscar Salvador authored
    Prior to 217b2119 ("mm,page_owner: implement the tracking of the
    stacks count") the only place where page_owner could potentially go into
    recursion due to its need of allocating more memory was in save_stack(),
    which ends up calling into stackdepot code with the possibility of
    allocating memory.
    
    We made sure to guard against that by signaling that the current task was
    already in page_owner code, so in case a recursion attempt was made, we
    could catch that and return dummy_handle.
    
    After above commit, a new place in page_owner code was introduced where we
    could allocate memory, meaning we could go into recursion would we take
    that path.
    
    Make sure to signal that we are in page_owner in that codepath as well. 
    Move the guard code into two helpers {un}set_current_in_page_owner() and
    use them prior to calling in the two functions that might allocate memory.
    
    Link: https://lkml.kernel.org/r/20240315222610.6870-1-osalvador@suse.deSigned-off-by: default avatarOscar Salvador <osalvador@suse.de>
    Fixes: 217b2119 ("mm,page_owner: implement the tracking of the stacks count")
    Reviewed-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Andrey Konovalov <andreyknvl@gmail.com>
    Cc: Marco Elver <elver@google.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Oscar Salvador <osalvador@suse.de>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    7844c014
page_owner.c 23.7 KB