mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00
qemu-vmsr-helper: fix socket loop breakage
Between v5 and v6 of the series, the socket loop of qemu-vmsr-helper was changed to allow sending multiple requests on the same socket. Unfortunately, the condition of the while loop is botched and the loop will never be entered. Clean it up, and also unify the handling of error reporting. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
6e623af301
commit
768a28394c
1 changed files with 9 additions and 7 deletions
|
@ -227,19 +227,17 @@ static void coroutine_fn vh_co_entry(void *opaque)
|
|||
&peer_pid,
|
||||
&local_err);
|
||||
if (r < 0) {
|
||||
error_report_err(local_err);
|
||||
goto out;
|
||||
}
|
||||
|
||||
while (r < 0) {
|
||||
for (;;) {
|
||||
/*
|
||||
* Read the requested MSR
|
||||
* Only RAPL MSR in rapl-msr-index.h is allowed
|
||||
*/
|
||||
r = qio_channel_read_all(QIO_CHANNEL(client->ioc),
|
||||
(char *) &request, sizeof(request), &local_err);
|
||||
if (r < 0) {
|
||||
error_report_err(local_err);
|
||||
r = qio_channel_read_all_eof(QIO_CHANNEL(client->ioc),
|
||||
(char *) &request, sizeof(request), &local_err);
|
||||
if (r <= 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -261,11 +259,15 @@ static void coroutine_fn vh_co_entry(void *opaque)
|
|||
sizeof(vmsr),
|
||||
&local_err);
|
||||
if (r < 0) {
|
||||
error_report_err(local_err);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
out:
|
||||
if (local_err) {
|
||||
error_report_err(local_err);
|
||||
}
|
||||
|
||||
object_unref(OBJECT(client->ioc));
|
||||
g_free(client);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue