Commit 07cf2a64 authored by Jiri Slaby's avatar Jiri Slaby Committed by Konrad Rzeszutek Wilk

xen: fix memory leak in Xen PCI MSI/MSI-X allocator.

Stanse found that xen_setup_msi_irqs leaks memory when
xen_allocate_pirq fails. Free the memory in that fail path.
Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: xen-devel@lists.xensource.com
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: x86@kernel.org
parent 1688c3d6
...@@ -147,8 +147,10 @@ static int xen_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) ...@@ -147,8 +147,10 @@ static int xen_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
irq = xen_allocate_pirq(v[i], 0, /* not sharable */ irq = xen_allocate_pirq(v[i], 0, /* not sharable */
(type == PCI_CAP_ID_MSIX) ? (type == PCI_CAP_ID_MSIX) ?
"pcifront-msi-x" : "pcifront-msi"); "pcifront-msi-x" : "pcifront-msi");
if (irq < 0) if (irq < 0) {
return -1; ret = -1;
goto free;
}
ret = set_irq_msi(irq, msidesc); ret = set_irq_msi(irq, msidesc);
if (ret) if (ret)
...@@ -164,7 +166,7 @@ static int xen_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) ...@@ -164,7 +166,7 @@ static int xen_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
if (ret == -ENODEV) if (ret == -ENODEV)
dev_err(&dev->dev, "Xen PCI frontend has not registered" \ dev_err(&dev->dev, "Xen PCI frontend has not registered" \
" MSI/MSI-X support!\n"); " MSI/MSI-X support!\n");
free:
kfree(v); kfree(v);
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment