oom: dump_tasks use find_lock_task_mm too fix
authorDavid Rientjes <rientjes@google.com>
Tue, 10 Aug 2010 00:18:47 +0000 (17:18 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 10 Aug 2010 03:44:56 +0000 (20:44 -0700)
When find_lock_task_mm() returns a thread other than p in dump_tasks(),
its name should be displayed instead.  This is the thread that will be
targeted by the oom killer, not its mm-less parent.

This also allows us to safely dereference task->comm without needing
get_task_comm().

While we're here, remove the cast on task_cpu(task) as Andrew suggested.

Signed-off-by: David Rientjes <rientjes@google.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Balbir Singh <balbir@in.ibm.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/oom_kill.c

index ef4ed4ae6f64b7bd5d37843040c283c2d39dcf77..907e2c0ad7a625c6b470222bdf3dc7a85cbe513d 100644 (file)
@@ -357,10 +357,10 @@ static void dump_tasks(const struct mem_cgroup *mem)
                        continue;
                }
 
-               printk(KERN_INFO "[%5d] %5d %5d %8lu %8lu %3d     %3d %s\n",
+               printk(KERN_INFO "[%5d] %5d %5d %8lu %8lu %3u     %3d %s\n",
                       task->pid, __task_cred(task)->uid, task->tgid,
                       task->mm->total_vm, get_mm_rss(task->mm),
-                      (int)task_cpu(task), task->signal->oom_adj, p->comm);
+                      task_cpu(task), task->signal->oom_adj, task->comm);
                task_unlock(task);
        }
 }