[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [PATCH] pci: fix pcibus_get_dev_path()
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] Re: [PATCH] pci: fix pcibus_get_dev_path() |
Date: |
Thu, 20 Jan 2011 16:21:32 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Thu, Jan 20, 2011 at 06:31:59PM +0800, TeLeMan wrote:
> The commit 6a7005d14b3c32d4864a718fb1cb19c789f58a5 used snprintf()
> incorrectly.
>
> Signed-off-by: TeLeMan <address@hidden>
This won't work for nested bridges as \n by the first
sprintf overwrites the rest of the string.
I sent a fix titled
[PATCH] pci: fix device paths
look it up.
> ---
> hw/pci.c | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/hw/pci.c b/hw/pci.c
> index 8d0e3df..9f8800d 100644
> --- a/hw/pci.c
> +++ b/hw/pci.c
> @@ -2050,14 +2050,14 @@ static char *pcibus_get_dev_path(DeviceState *dev)
> path[path_len] = '\0';
>
> /* First field is the domain. */
> - snprintf(path, domain_len, "%04x:00", pci_find_domain(d->bus));
> + snprintf(path, domain_len + 1, "%04x:00", pci_find_domain(d->bus));
>
> /* Fill in slot numbers. We walk up from device to root, so need to print
> * them in the reverse order, last to first. */
> p = path + path_len;
> for (t = d; t; t = t->bus->parent_dev) {
> p -= slot_len;
> - snprintf(p, slot_len, ":%02x.%x", PCI_SLOT(t->devfn),
> PCI_FUNC(d->devfn));
> + snprintf(p, slot_len + 1, ":%02x.%x", PCI_SLOT(t->devfn),
> PCI_FUNC(d->devfn));
> }
>
> return path;
> --
> 1.7.3.1.msysgit.0