• Zhaoyang Huang's avatar
    trace : Have tracing buffer info use kvzalloc instead of kzalloc · 0f69dae4
    Zhaoyang Huang authored
    High order memory stuff within trace could introduce OOM, use kvzalloc instead.
    
    Please find the bellowing for the call stack we run across in an android system.
    The scenario happens when traced_probes is woken up to get a large quantity of
    trace even if free memory is even higher than watermark_low. 
    
    traced_probes invoked oom-killer: gfp_mask=0x140c0c0(GFP_KERNEL|__GFP_COMP|__GFP_ZERO), nodemask=(null),  order=2, oom_score_adj=-1
    
    traced_probes cpuset=system-background mems_allowed=0
    CPU: 3 PID: 588 Comm: traced_probes Tainted: G        W  O    4.14.181 #1
    Hardware name: Generic DT based system
    (unwind_backtrace) from [<c010d824>] (show_stack+0x20/0x24)
    (show_stack) from [<c0b2e174>] (dump_stack+0xa8/0xec)
    (dump_stack) from [<c027d584>] (dump_header+0x9c/0x220)
    (dump_header) from [<c027cfe4>] (oom_kill_process+0xc0/0x5c4)
    (oom_kill_process) from [<c027cb94>] (out_of_memory+0x220/0x310)
    (out_of_memory) from [<c02816bc>] (__alloc_pages_nodemask+0xff8/0x13a4)
    (__alloc_pages_nodemask) from [<c02a6a1c>] (kmalloc_order+0x30/0x48)
    (kmalloc_order) from [<c02a6a64>] (kmalloc_order_trace+0x30/0x118)
    (kmalloc_order_trace) from [<c0223d7c>] (tracing_buffers_open+0x50/0xfc)
    (tracing_buffers_open) from [<c02e6f58>] (do_dentry_open+0x278/0x34c)
    (do_dentry_open) from [<c02e70d0>] (vfs_open+0x50/0x70)
    (vfs_open) from [<c02f7c24>] (path_openat+0x5fc/0x169c)
    (path_openat) from [<c02f75c4>] (do_filp_open+0x94/0xf8)
    (do_filp_open) from [<c02e7650>] (do_sys_open+0x168/0x26c)
    (do_sys_open) from [<c02e77bc>] (SyS_openat+0x34/0x38)
    (SyS_openat) from [<c0108bc0>] (ret_fast_syscall+0x0/0x28)
    
    Link: https://lkml.kernel.org/r/1596155265-32365-1-git-send-email-zhaoyang.huang@unisoc.comSigned-off-by: default avatarZhaoyang Huang <zhaoyang.huang@unisoc.com>
    Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
    0f69dae4
trace.c 230 KB