Messages in this thread Patch in this message | | | From | Andrey Vagin <> | Subject | [PATCH] kernel: move exit_task_work() past exit_notify() | Date | Fri, 12 Apr 2013 23:27:33 +0400 |
| |
exit_task_work() must be called after exit_notify, because exit_task_namespaces() may release a file and fput() enqueues a work.
exit_notify exit_task_namespaces free_ipc_ns shm_destroy fput task_work_add
so if task works don't run after exit_notify(), a few files may leak.
Cc: Andrew Morton <akpm@linux-foundation.org> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Oleg Nesterov <oleg@redhat.com> Cc: David Howells <dhowells@redhat.com> Signed-off-by: Andrey Vagin <avagin@openvz.org> --- kernel/exit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/exit.c b/kernel/exit.c index 60bc027..1d1129b 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -795,7 +795,6 @@ void do_exit(long code) exit_shm(tsk); exit_files(tsk); exit_fs(tsk); - exit_task_work(tsk); check_stack_usage(); exit_thread(); @@ -822,6 +821,7 @@ void do_exit(long code) ptrace_put_breakpoints(tsk); exit_notify(tsk, group_dead); + exit_task_work(tsk); #ifdef CONFIG_NUMA task_lock(tsk); mpol_put(tsk->mempolicy); -- 1.8.1.4
| |