projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
7c59aec
)
oom: oom_kill_process() doesn't select kthread child
author
KOSAKI Motohiro
<
[email protected]
>
Tue, 10 Aug 2010 00:19:34 +0000
(17:19 -0700)
committer
Linus Torvalds
<
[email protected]
>
Tue, 10 Aug 2010 03:45:01 +0000
(20:45 -0700)
Presently select_bad_process() has a PF_KTHREAD check, but
oom_kill_process doesn't. It mean oom_kill_process() may choose wrong
task, especially, when the child are using use_mm().
Signed-off-by: KOSAKI Motohiro <
[email protected]
>
Reviewed-by: Minchan Kim <
[email protected]
>
Cc: David Rientjes <
[email protected]
>
Cc: KAMEZAWA Hiroyuki <
[email protected]
>
Cc: Oleg Nesterov <
[email protected]
>
Signed-off-by: Andrew Morton <
[email protected]
>
Signed-off-by: Linus Torvalds <
[email protected]
>
mm/oom_kill.c
patch
|
blob
|
history
diff --git
a/mm/oom_kill.c
b/mm/oom_kill.c
index 6e9f16a910e06741e6fdb8da92a4bfa0b1149f65..b9816ea2eb8f7dbd3d89cd0b435f81ee9efc7480 100644
(file)
--- a/
mm/oom_kill.c
+++ b/
mm/oom_kill.c
@@
-467,6
+467,8
@@
static int oom_kill_process(struct task_struct *p, gfp_t gfp_mask, int order,
if (child->mm == p->mm)
continue;
+ if (child->flags & PF_KTHREAD)
+ continue;
if (mem && !task_in_mem_cgroup(child, mem))
continue;
if (!has_intersects_mems_allowed(child, nodemask))