vl.c: daemonize before guest memory allocation
authorIgor Mammedov <imammedo@redhat.com>
Mon, 2 Jun 2014 13:25:00 +0000 (15:25 +0200)
committerMichael S. Tsirkin <mst@redhat.com>
Wed, 18 Jun 2014 18:10:27 +0000 (21:10 +0300)
memory allocated for guest before QEMU is daemonized and then mapped
later in guest's address space after it is daemonized, leads to EPT
violation and QEMU aborts.

To avoid this and similar issues switch to daemonized mode early
before applying/processing other options.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
vl.c

diff --git a/vl.c b/vl.c
index 9ce65fc3dd15609d787ee465f3c48c6906cef6c2..16418ecf8c5d94c4160c82ece2922e0647b871bb 100644 (file)
--- a/vl.c
+++ b/vl.c
@@ -3965,6 +3965,8 @@ int main(int argc, char **argv, char **envp)
     }
     loc_set_none();
 
+    os_daemonize();
+
     if (qemu_init_main_loop()) {
         fprintf(stderr, "qemu_init_main_loop failed\n");
         exit(1);
@@ -4206,8 +4208,6 @@ int main(int argc, char **argv, char **envp)
     }
 #endif
 
-    os_daemonize();
-
     if (pid_file && qemu_create_pidfile(pid_file) != 0) {
         os_pidfile_error();
         exit(1);