diff options
| author | Stefan Reiter <s.reiter@proxmox.com> | 2021-03-22 16:40:24 +0100 |
|---|---|---|
| committer | Markus Armbruster <armbru@redhat.com> | 2021-05-12 17:29:11 +0200 |
| commit | a67b996e7894edfafbcd3fd007c9f58f26d25908 (patch) | |
| tree | e5f1379daffd2c1357685a4dc872dcd0ff9a9b80 /tests/qtest/boot-serial-test.c | |
| parent | a5ccdccc97d6e0d75282ede5b866cf694e9602b0 (diff) | |
| download | focaccia-qemu-a67b996e7894edfafbcd3fd007c9f58f26d25908.tar.gz focaccia-qemu-a67b996e7894edfafbcd3fd007c9f58f26d25908.zip | |
monitor/qmp: fix race on CHR_EVENT_CLOSED without OOB
The QMP dispatcher coroutine holds the qmp_queue_lock over a yield point, where it expects to be rescheduled from the main context. If a CHR_EVENT_CLOSED event is received just then, it can race and block the main thread on the mutex in monitor_qmp_cleanup_queue_and_resume. monitor_resume does not need to be called from main context, so we can call it immediately after popping a request from the queue, which allows us to drop the qmp_queue_lock mutex before yielding. Suggested-by: Wolfgang Bumiller <w.bumiller@proxmox.com> Signed-off-by: Stefan Reiter <s.reiter@proxmox.com> Message-Id: <20210322154024.15011-1-s.reiter@proxmox.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Cc: qemu-stable@nongnu.org Signed-off-by: Markus Armbruster <armbru@redhat.com>
Diffstat (limited to 'tests/qtest/boot-serial-test.c')
0 files changed, 0 insertions, 0 deletions