migration/qemu-file.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
The code calls qio_channel_read() in a loop when it reports
QIO_CHANNEL_ERR_BLOCK. This code is reported when errno==EAGAIN.
As such the later block of code will always hit the 'errno != EAGAIN'
condition, making the final 'else' unreachable.
Fixes: Coverity CID 1490203
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
migration/qemu-file.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/migration/qemu-file.c b/migration/qemu-file.c
index 1e80d496b7..1615c48b7e 100644
--- a/migration/qemu-file.c
+++ b/migration/qemu-file.c
@@ -384,10 +384,8 @@ static ssize_t qemu_fill_buffer(QEMUFile *f)
f->total_transferred += len;
} else if (len == 0) {
qemu_file_set_error_obj(f, -EIO, local_error);
- } else if (len != -EAGAIN) {
- qemu_file_set_error_obj(f, len, local_error);
} else {
- error_free(local_error);
+ qemu_file_set_error_obj(f, len, local_error);
}
return len;
--
2.36.1
* Daniel P. Berrangé (berrange@redhat.com) wrote:
> The code calls qio_channel_read() in a loop when it reports
> QIO_CHANNEL_ERR_BLOCK. This code is reported when errno==EAGAIN.
>
> As such the later block of code will always hit the 'errno != EAGAIN'
> condition, making the final 'else' unreachable.
>
> Fixes: Coverity CID 1490203
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Queued
> ---
> migration/qemu-file.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/migration/qemu-file.c b/migration/qemu-file.c
> index 1e80d496b7..1615c48b7e 100644
> --- a/migration/qemu-file.c
> +++ b/migration/qemu-file.c
> @@ -384,10 +384,8 @@ static ssize_t qemu_fill_buffer(QEMUFile *f)
> f->total_transferred += len;
> } else if (len == 0) {
> qemu_file_set_error_obj(f, -EIO, local_error);
> - } else if (len != -EAGAIN) {
> - qemu_file_set_error_obj(f, len, local_error);
> } else {
> - error_free(local_error);
> + qemu_file_set_error_obj(f, len, local_error);
> }
>
> return len;
> --
> 2.36.1
>
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
* Daniel P. Berrangé (berrange@redhat.com) wrote:
> The code calls qio_channel_read() in a loop when it reports
> QIO_CHANNEL_ERR_BLOCK. This code is reported when errno==EAGAIN.
>
> As such the later block of code will always hit the 'errno != EAGAIN'
> condition, making the final 'else' unreachable.
>
> Fixes: Coverity CID 1490203
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> ---
> migration/qemu-file.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/migration/qemu-file.c b/migration/qemu-file.c
> index 1e80d496b7..1615c48b7e 100644
> --- a/migration/qemu-file.c
> +++ b/migration/qemu-file.c
> @@ -384,10 +384,8 @@ static ssize_t qemu_fill_buffer(QEMUFile *f)
> f->total_transferred += len;
> } else if (len == 0) {
> qemu_file_set_error_obj(f, -EIO, local_error);
> - } else if (len != -EAGAIN) {
> - qemu_file_set_error_obj(f, len, local_error);
> } else {
> - error_free(local_error);
> + qemu_file_set_error_obj(f, len, local_error);
> }
>
> return len;
> --
> 2.36.1
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
© 2016 - 2026 Red Hat, Inc.