Commit 817ef04d authored by Jan Kiszka's avatar Jan Kiszka Committed by Peter Maydell
Browse files

Make qemu_shutdown_requested signal-safe



qemu_shutdown_requested may be interrupted by qemu_system_killed. If the
latter sets shutdown_requested after qemu_shutdown_requested has read it
but before it was cleared, the shutdown event is lost. Fix this by using
atomic_xchg.

This provides a different fix for the problem which commit 15124e14
attempts to deal with. That commit breaks use of ^C to drop into gdb,
and so this approach is better (and 15124e14 can be reverted).

Signed-off-by: default avatarJan Kiszka <jan.kiszka@siemens.com>
Reviewed-by: default avatarGonglei <arei.gonglei@huawei.com>
Reviewed-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
[PMM: commit message tweak]
Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parent ff0d4876
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -1609,9 +1609,7 @@ int qemu_reset_requested_get(void)

static int qemu_shutdown_requested(void)
{
    int r = shutdown_requested;
    shutdown_requested = 0;
    return r;
    return atomic_xchg(&shutdown_requested, 0);
}

static void qemu_kill_report(void)