]> git.baikalelectronics.ru Git - kernel.git/commit
[PATCH] sanitize handling of shared descriptor tables in failing execve()
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 22 Apr 2008 09:11:59 +0000 (05:11 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 25 Apr 2008 13:23:53 +0000 (09:23 -0400)
commit6d808592af48addfd207fa9a73066fa114aa3c87
treeb44ae8e99ce96a1a4739b04d4d1a23c40ab8b163
parent6b772d007612abe7e1409c65dd1d658c7484ba76
[PATCH] sanitize handling of shared descriptor tables in failing execve()

* unshare_files() can fail; doing it after irreversible actions is wrong
  and de_thread() is certainly irreversible.
* since we do it unconditionally anyway, we might as well do it in do_execve()
  and save ourselves the PITA in binfmt handlers, etc.
* while we are at it, binfmt_som actually leaked files_struct on failure.

As a side benefit, unshare_files(), put_files_struct() and reset_files_struct()
become unexported.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/binfmt_elf.c
fs/binfmt_misc.c
fs/binfmt_som.c
fs/exec.c
kernel/exit.c
kernel/fork.c