diff options
Diffstat (limited to 'mm/memcontrol.c')
-rw-r--r-- | mm/memcontrol.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index f227786e73db..c3f09b2dda5f 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c | |||
@@ -1442,15 +1442,17 @@ void mem_cgroup_print_oom_info(struct mem_cgroup *memcg, struct task_struct *p) | |||
1442 | struct mem_cgroup *iter; | 1442 | struct mem_cgroup *iter; |
1443 | unsigned int i; | 1443 | unsigned int i; |
1444 | 1444 | ||
1445 | if (!p) | ||
1446 | return; | ||
1447 | |||
1448 | mutex_lock(&oom_info_lock); | 1445 | mutex_lock(&oom_info_lock); |
1449 | rcu_read_lock(); | 1446 | rcu_read_lock(); |
1450 | 1447 | ||
1451 | pr_info("Task in "); | 1448 | if (p) { |
1452 | pr_cont_cgroup_path(task_cgroup(p, memory_cgrp_id)); | 1449 | pr_info("Task in "); |
1453 | pr_cont(" killed as a result of limit of "); | 1450 | pr_cont_cgroup_path(task_cgroup(p, memory_cgrp_id)); |
1451 | pr_cont(" killed as a result of limit of "); | ||
1452 | } else { | ||
1453 | pr_info("Memory limit reached of cgroup "); | ||
1454 | } | ||
1455 | |||
1454 | pr_cont_cgroup_path(memcg->css.cgroup); | 1456 | pr_cont_cgroup_path(memcg->css.cgroup); |
1455 | pr_cont("\n"); | 1457 | pr_cont("\n"); |
1456 | 1458 | ||
@@ -1537,7 +1539,7 @@ static void mem_cgroup_out_of_memory(struct mem_cgroup *memcg, gfp_t gfp_mask, | |||
1537 | return; | 1539 | return; |
1538 | } | 1540 | } |
1539 | 1541 | ||
1540 | check_panic_on_oom(CONSTRAINT_MEMCG, gfp_mask, order, NULL); | 1542 | check_panic_on_oom(CONSTRAINT_MEMCG, gfp_mask, order, NULL, memcg); |
1541 | totalpages = mem_cgroup_get_limit(memcg) ? : 1; | 1543 | totalpages = mem_cgroup_get_limit(memcg) ? : 1; |
1542 | for_each_mem_cgroup_tree(iter, memcg) { | 1544 | for_each_mem_cgroup_tree(iter, memcg) { |
1543 | struct css_task_iter it; | 1545 | struct css_task_iter it; |