• Michal Hocko's avatar
    memcg: change oom_info_lock to mutex · 08088cb9
    Michal Hocko authored
    Kirill has reported the following:
    
      Task in /test killed as a result of limit of /test
      memory: usage 10240kB, limit 10240kB, failcnt 51
      memory+swap: usage 10240kB, limit 10240kB, failcnt 0
      kmem: usage 0kB, limit 18014398509481983kB, failcnt 0
      Memory cgroup stats for /test:
    
      BUG: sleeping function called from invalid context at kernel/cpu.c:68
      in_atomic(): 1, irqs_disabled(): 0, pid: 66, name: memcg_test
      2 locks held by memcg_test/66:
       #0:  (memcg_oom_lock#2){+.+...}, at: [<ffffffff81131014>] pagefault_out_of_memory+0x14/0x90
       #1:  (oom_info_lock){+.+...}, at: [<ffffffff81197b2a>] mem_cgroup_print_oom_info+0x2a/0x390
      CPU: 2 PID: 66 Comm: memcg_test Not tainted 3.14.0-rc1-dirty #745
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS Bochs 01/01/2011
      Call Trace:
        __might_sleep+0x16a/0x210
        get_online_cpus+0x1c/0x60
        mem_cgroup_read_stat+0x27/0xb0
        mem_cgroup_print_oom_info+0x260/0x390
        dump_header+0x88/0x251
        ? trace_hardirqs_on+0xd/0x10
        oom_kill_process+0x258/0x3d0
        mem_cgroup_oom_synchronize+0x656/0x6c0
        ? mem_cgroup_charge_common+0xd0/0xd0
        pagefault_out_of_memory+0x14/0x90
        mm_fault_error+0x91/0x189
        __do_page_fault+0x48e/0x580
        do_page_fault+0xe/0x10
        page_fault+0x22/0x30
    
    which complains that mem_cgroup_read_stat cannot be called from an atomic
    context but mem_cgroup_print_oom_info takes a spinlock.  Change
    oom_info_lock to a mutex.
    
    This was introduced by 947b3dd1 ("memcg, oom: lock
    mem_cgroup_print_oom_info").
    Signed-off-by: default avatarMichal Hocko <mhocko@suse.cz>
    Reported-by: default avatar"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: David Rientjes <rientjes@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    08088cb9
memcontrol.c 194 KB