]> git.proxmox.com Git - mirror_qemu.git/blobdiff - user-exec.c
rbd: Reject -blockdev server.*.{numeric, to, ipv4, ipv6}
[mirror_qemu.git] / user-exec.c
index 95f9f97c5c82480d9730f294001821589c591b17..6db075884d917f9a9fa7c78bfe1800ca5ebb0cb3 100644 (file)
@@ -105,8 +105,11 @@ static inline int handle_cpu_signal(uintptr_t pc, unsigned long address,
     if (ret == 0) {
         return 1; /* the MMU fault was handled without causing real CPU fault */
     }
-    /* now we have a real cpu fault */
-    cpu_restore_state(cpu, pc);
+
+    /* Now we have a real cpu fault.  Since this is the exact location of
+     * the exception, we must undo the adjustment done by cpu_restore_state
+     * for handling call return addresses.  */
+    cpu_restore_state(cpu, pc + GETPC_ADJ);
 
     sigprocmask(SIG_SETMASK, old_set, NULL);
     cpu_loop_exit(cpu);