If populate_msi_sysfs() function failed msix_capability_init() must return
the error code, but it returns the success instead. This update fixes the
described misbehaviour.
Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Tejun Heo <tj@kernel.org>
ret = arch_setup_msi_irqs(dev, nvec, PCI_CAP_ID_MSIX);
if (ret)
ret = arch_setup_msi_irqs(dev, nvec, PCI_CAP_ID_MSIX);
if (ret)
/*
* Some devices require MSI-X to be enabled before we can touch the
/*
* Some devices require MSI-X to be enabled before we can touch the
msix_program_entries(dev, entries);
ret = populate_msi_sysfs(dev);
msix_program_entries(dev, entries);
ret = populate_msi_sysfs(dev);
- if (ret) {
- ret = 0;
- goto error;
- }
+ if (ret)
+ goto out_free;
/* Set MSI-X enabled bits and unmask the function */
pci_intx_for_msi(dev, 0);
/* Set MSI-X enabled bits and unmask the function */
pci_intx_for_msi(dev, 0);
if (ret < 0) {
/*
* If we had some success, report the number of irqs
if (ret < 0) {
/*
* If we had some success, report the number of irqs
free_msi_irqs(dev);
return ret;
free_msi_irqs(dev);
return ret;