qemu/net
Michael Roth 885660bd48 network scripts: don't block SIGCHLD before forking
This patch fixes a bug where child processes of launch_script() can
misbehave due to SIGCHLD being blocked. In the case of `sudo`, this
causes a permanent hang.

Previously a SIGCHLD handler was added to reap fork_exec()'d zombie
processes by calling waitpid(-1, ...). This required other
fork()/waitpid() callers to temporarilly block SIGCHILD to avoid
having the final wait status being intercepted by the SIGCHLD
handler:

7c3370d4fe

Since then, the qemu_add_child_watch() interface was added to allow
registration of such processes and reap only from that specific set
of PIDs:

4d54ec7898

As a result, we can now avoid blocking SIGCHLD in launch_script(), so
drop that behavior.

Reviewed-by: Jan Kiszka <jan.kiszka@siemens.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2011-12-15 10:22:40 -06:00
..
checksum.c net: move net-checksum.c under net/ 2009-10-30 08:39:26 -05:00
checksum.h net: move net-checksum.c under net/ 2009-10-30 08:39:26 -05:00
dump.c Use qemu-common.h or qemu-timer.h in place of sysemu.h 2011-04-15 18:25:44 +00:00
dump.h net: move dump backend code from net.c to net/dump.c 2009-12-03 09:41:28 -06:00
queue.c Use glib memory allocation and free functions 2011-08-20 23:01:08 -05:00
queue.h net: move net-queue.[ch] under net/ 2009-10-30 08:39:26 -05:00
slirp.c slirp: Clean up net_slirp_hostfwd_remove()'s use of get_str_sep() 2011-11-22 11:11:23 +00:00
slirp.h net: move slirp code from net.c to net/slirp.c 2009-12-03 09:41:27 -06:00
socket.c Merge remote-tracking branch 'stefanha/trivial-patches-next' into staging 2011-12-14 07:59:21 -06:00
socket.h net: move socket backend code from net.c to net/socket.c 2009-12-03 09:41:28 -06:00
tap-aix.c tap: add APIs for vnet header length 2010-09-07 20:27:33 +03:00
tap-bsd.c Fix network interface tap backend 2011-08-07 09:48:59 +00:00
tap-haiku.c tap: Add stub for Haiku 2010-10-03 06:31:41 +00:00
tap-linux.c net: tap-linux: Fix unhelpful error message 2011-11-01 06:23:48 +00:00
tap-linux.h tap: add APIs for vnet header length 2010-09-07 20:27:33 +03:00
tap-solaris.c fix typo: delete redundant semicolon 2011-12-06 09:56:41 +00:00
tap-win32.c Fixing tap adapter for win32 2011-02-25 15:14:04 +00:00
tap.c network scripts: don't block SIGCHLD before forking 2011-12-15 10:22:40 -06:00
tap.h tap: add APIs for vnet header length 2010-09-07 20:27:33 +03:00
util.c net: move parse_macaddr() to net/util.[ch] 2009-12-03 09:41:34 -06:00
util.h net: move parse_macaddr() to net/util.[ch] 2009-12-03 09:41:34 -06:00
vde.c Remove unused sysemu.h include directives 2011-04-15 18:25:41 +00:00
vde.h net: move vde code from net.c to net/vde.c 2009-12-03 09:41:28 -06:00