Message ID | 1466561915-25929-1-git-send-email-shawn.lin@rock-chips.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
Hi, [auto build test WARNING on pci/next] [also build test WARNING on v4.7-rc4 next-20160621] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Shawn-Lin/PCI-MSI-Simplify-the-return-value-of-arch_setup_msi_irqs/20160622-103824 base: https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git next config: i386-defconfig (attached as .config) compiler: gcc-6 (Debian 6.1.1-1) 6.1.1 20160430 reproduce: # save the attached .config to linux build tree make ARCH=i386 All warnings (new ones prefixed by >>): In file included from include/linux/preempt.h:10:0, from include/linux/spinlock.h:50, from include/linux/mmzone.h:7, from include/linux/gfp.h:5, from include/linux/mm.h:9, from drivers/pci/msi.c:10: drivers/pci/msi.c: In function 'arch_setup_msi_irqs': include/linux/list.h:447:2: warning: this 'for' clause does not guard... [-Wmisleading-indentation] for (pos = list_first_entry(head, typeof(*pos), member); \ ^ >> include/linux/msi.h:108:2: note: in expansion of macro 'list_for_each_entry' list_for_each_entry((desc), dev_to_msi_list((dev)), list) ^~~~~~~~~~~~~~~~~~~ >> include/linux/msi.h:113:2: note: in expansion of macro 'for_each_msi_entry' for_each_msi_entry((desc), &(pdev)->dev) ^~~~~~~~~~~~~~~~~~ >> drivers/pci/msi.c:122:2: note: in expansion of macro 'for_each_pci_msi_entry' for_each_pci_msi_entry(entry, dev) ^~~~~~~~~~~~~~~~~~~~~~ drivers/pci/msi.c:124:3: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'for' if (ret) ^~ vim +/for_each_pci_msi_entry +122 drivers/pci/msi.c 106 107 int __weak arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) 108 { 109 struct msi_controller *chip = dev->bus->msi; 110 struct msi_desc *entry; 111 int ret = 0; 112 113 if (chip && chip->setup_irqs) 114 return chip->setup_irqs(chip, dev, nvec, type); 115 /* 116 * If an architecture wants to support multiple MSI, it needs to 117 * override arch_setup_msi_irqs() 118 */ 119 if (type == PCI_CAP_ID_MSI && nvec > 1) 120 return 1; 121 > 122 for_each_pci_msi_entry(entry, dev) 123 ret = arch_setup_msi_irq(dev, entry); 124 if (ret) 125 return -ENOSPC; 126 127 return 0; 128 } 129 130 /* --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index a080f44..4a40b72 100644 --- a/drivers/pci/msi.c +++ b/drivers/pci/msi.c @@ -108,7 +108,7 @@ int __weak arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) { struct msi_controller *chip = dev->bus->msi; struct msi_desc *entry; - int ret; + int ret = 0; if (chip && chip->setup_irqs) return chip->setup_irqs(chip, dev, nvec, type); @@ -119,13 +119,10 @@ int __weak arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) if (type == PCI_CAP_ID_MSI && nvec > 1) return 1; - for_each_pci_msi_entry(entry, dev) { + for_each_pci_msi_entry(entry, dev) ret = arch_setup_msi_irq(dev, entry); - if (ret < 0) - return ret; - if (ret > 0) + if (ret) return -ENOSPC; - } return 0; }
No any callers do care whether arch_setup_msi_irqs returns -ENOSPC or other error numbers. That means they treat the negative numbers in the same way. So there shouldn't make any difference to directly return -ENOSPC if finding it's non-zero. Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com> --- drivers/pci/msi.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)