Andrew Morton wrote:
Bernd Schmidt <[email protected]> wrote:
please revert 1ad3dcc0. That was a patch to the binfmt_flat loader,
which was motivated by an LTP testcase which checks that execve returns
EMFILE when the file descriptor table is full.
The patch is buggy: the code now keeps file descriptors open for the
executable and its libraries, which has confused at least one
application. It's also unnecessary, since there is no code that uses
the file descriptor, so the new EMFILE error return is totally artificial.
I don't get it. The substance of the patch is
+ /* check file descriptor */
+ exec_fileno = get_unused_fd();
+ if (exec_fileno < 0) {
+ ret = -EMFILE;
+ goto err;
+ }
+ get_file(bprm->file);
+ fd_install(exec_fileno, bprm->file);
and that get_file() will be undone by exit(). Without this change we'll
forget to do file limit checking.
It's not the get_file that's the problem, it's the get_unused_fd and
fd_install. These files are now open while the process lives and
consume file descriptors. This does not happen with the ELF loader,
which does
if (interpreter_type != INTERPRETER_AOUT)
sys_close(elf_exec_fileno);
before transferring control to the application. So, fewer file
descriptors are available for the app, and they start at a higher number.
Before the change, we didn't allocate or install a file descriptor,
hence there wasn't any reason to return EMFILE. The spec at
http://www.opengroup.org/onlinepubs/009695399/functions/exec.html
doesn't list EMFILE as a possible error.
If you're unconvinced, then at the very least we need to add a sys_close
call in the success path.
Bernd
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]