mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
Don't leak file descriptors
We're leaking file descriptors to child processes. Set FD_CLOEXEC on file descriptors that don't need to be passed to children to stop this misbehaviour. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
12c09b8ce2
commit
40ff6d7e8d
20 changed files with 178 additions and 34 deletions
|
@ -620,7 +620,7 @@ static CharDriverState *qemu_chr_open_file_out(QemuOpts *opts)
|
|||
{
|
||||
int fd_out;
|
||||
|
||||
TFR(fd_out = open(qemu_opt_get(opts, "path"),
|
||||
TFR(fd_out = qemu_open(qemu_opt_get(opts, "path"),
|
||||
O_WRONLY | O_TRUNC | O_CREAT | O_BINARY, 0666));
|
||||
if (fd_out < 0)
|
||||
return NULL;
|
||||
|
@ -640,8 +640,8 @@ static CharDriverState *qemu_chr_open_pipe(QemuOpts *opts)
|
|||
|
||||
snprintf(filename_in, 256, "%s.in", filename);
|
||||
snprintf(filename_out, 256, "%s.out", filename);
|
||||
TFR(fd_in = open(filename_in, O_RDWR | O_BINARY));
|
||||
TFR(fd_out = open(filename_out, O_RDWR | O_BINARY));
|
||||
TFR(fd_in = qemu_open(filename_in, O_RDWR | O_BINARY));
|
||||
TFR(fd_out = qemu_open(filename_out, O_RDWR | O_BINARY));
|
||||
if (fd_in < 0 || fd_out < 0) {
|
||||
if (fd_in >= 0)
|
||||
close(fd_in);
|
||||
|
@ -2101,7 +2101,7 @@ static void tcp_chr_accept(void *opaque)
|
|||
len = sizeof(saddr);
|
||||
addr = (struct sockaddr *)&saddr;
|
||||
}
|
||||
fd = accept(s->listen_fd, addr, &len);
|
||||
fd = qemu_accept(s->listen_fd, addr, &len);
|
||||
if (fd < 0 && errno != EINTR) {
|
||||
return;
|
||||
} else if (fd >= 0) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue