[libvirt] [PATCHv2] blockinfo: fix qemu regression in handling disk name

Michal Privoznik mprivozn at redhat.com
Thu Sep 8 09:29:15 UTC 2011


On 08.09.2011 11:12, Eric Blake wrote:
> Regression introduced in commit 89b6284fd, due to an incorrect
> conversion to the new means of converting disk names back to
> the correct object.
> 
> * src/qemu/qemu_driver.c (qemuDomainGetBlockInfo): Avoid NULL deref.
> ---
>  src/qemu/qemu_driver.c |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 1925ba5..f73270f 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -7755,8 +7755,8 @@ static int qemuDomainGetBlockInfo(virDomainPtr dom,
>      virStorageFileMetadata *meta = NULL;
>      virDomainDiskDefPtr disk = NULL;
>      struct stat sb;
> +    int i;
>      int format;
> -    const char *actual;
> 
>      virCheckFlags(0, -1);
> 
> @@ -7778,12 +7778,12 @@ static int qemuDomainGetBlockInfo(virDomainPtr dom,
>      }
> 
>      /* Check the path belongs to this domain. */
> -    if (!(actual = virDomainDiskPathByName(vm->def, path))) {
> +    if ((i = virDomainDiskIndexByName(vm->def, path, false)) < 0) {
>          qemuReportError(VIR_ERR_INVALID_ARG,
>                          _("invalid path %s not assigned to domain"), path);
>          goto cleanup;
>      }
> -    path = actual;
> +    disk = vm->def->disks[i];
> 
>      /* The path is correct, now try to open it and get its size. */
>      fd = open(path, O_RDONLY);

In fact, we need to update path as well, beacuse we use it later (as can
be seen in context. but that is not the only place).

so ACK with this nit fixed.

Michal




More information about the libvir-list mailing list