mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-12-11 16:00:50 -07:00
monitor: don't wake up qmp_dispatcher_co coroutine upon cleanup
Since the commit 3e6bed61 ("monitor: cleanup detection of qmp_dispatcher_co
shutting down"), coroutine pointer qmp_dispatcher_co is set to NULL upon
cleanup. If a QMP command is sent after monitor_cleanup() (e.g. after
shutdown), this may lead to SEGFAULT on aio_co_wake(NULL).
As mentioned in the comment inside monitor_cleanup(), the intention is to
allow incoming requests while shutting down, but simply leave them
without any response. Let's do exactly that, and if qmp_dispatcher_co
coroutine pointer has already been set to NULL, let's simply skip the
aio_co_wake() part.
Signed-off-by: Andrey Drobyshev <andrey.drobyshev@virtuozzo.com>
Link: https://lore.kernel.org/r/20250502214729.928380-2-andrey.drobyshev@virtuozzo.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
ffd5a60e9b
commit
03f50d7ee7
1 changed files with 2 additions and 1 deletions
|
|
@ -356,7 +356,8 @@ void qmp_dispatcher_co_wake(void)
|
|||
/* Write request before reading qmp_dispatcher_co_busy. */
|
||||
smp_mb__before_rmw();
|
||||
|
||||
if (!qatomic_xchg(&qmp_dispatcher_co_busy, true)) {
|
||||
if (!qatomic_xchg(&qmp_dispatcher_co_busy, true) &&
|
||||
qatomic_read(&qmp_dispatcher_co)) {
|
||||
aio_co_wake(qmp_dispatcher_co);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue