Go to file
Fiona Ebner 563c592898 savevm-async: avoid segfault when aborting snapshot
Reported in the community forum[0].

For 6.1.0, there were a few changes to the coroutine-sleep API, but
the adaptations in f376b2b ("update and rebase to QEMU v6.1.0") made
a mistake.

Currently, target_close_wait is NULL when passed to
qemu_co_sleep_ns_wakeable(), which further passes it to
qemu_co_sleep(), but there, it is dereferenced when trying to access
the 'to_wake' member:

> Thread 1 "kvm" received signal SIGSEGV, Segmentation fault.
> qemu_co_sleep (w=0x0) at ../util/qemu-coroutine-sleep.c:57

To fix it, create a proper struct and pass its address instead. Also
call qemu_co_sleep_wake unconditionally, because the NULL check (for
the 'to_wake' member) is done inside the function itself.

This patch is based on what the QEMU commits introducing the changes
to the coroutine-sleep API did to the callers in QEMU:
eaee072085 ("coroutine-sleep: allow qemu_co_sleep_wake that wakes nothing")
29a6ea24eb ("coroutine-sleep: replace QemuCoSleepState pointer with struct in the API")

[0]: https://forum.proxmox.com/threads/112130/

Tested-by: Mira Limbeck <m.limbeck@proxmox.com>
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2022-08-19 09:44:14 +02:00
debian savevm-async: avoid segfault when aborting snapshot 2022-08-19 09:44:14 +02:00
keycodemapdb update keycodemapdb for 6.0 2021-05-28 11:29:44 +02:00
qemu@823a3f11fb update submodule and patches to 7.0.0 2022-06-29 12:29:21 +02:00
.gitmodules import stable-4 build files 2017-04-05 11:39:09 +02:00
backup.txt correct link to vma spec to new repository url 2020-01-14 11:18:52 +01:00
Makefile buildsys: change upload dist to bullseye 2021-06-08 11:18:10 +02:00
vma_spec.txt import stable-4 build files 2017-04-05 11:39:09 +02:00