diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2022-01-10 19:12:45 +0100 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2022-01-10 19:22:10 +0100 |
commit | 74a5257a0c175810d620b5e631c4e7554955ac25 (patch) | |
tree | a45cf74ccde4afd21ae12d5516d5ba81c839099f | |
parent | d558285413ea2f934ab90223ba908c30c5113aee (diff) |
genirq/msi: Populate sysfs entry only once
The MSI entries for multi-MSI are populated en bloc for the MSI descriptor,
but the current code invokes the population inside the per interrupt loop
which triggers a warning in the sysfs code and causes the interrupt
allocation to fail.
Move it outside of the loop so it works correctly for single and multi-MSI.
Fixes: bf5e758f02fc ("genirq/msi: Simplify sysfs handling")
Reported-by: Borislav Petkov <bp@alien8.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Borislav Petkov <bp@suse.de>
Link: https://lore.kernel.org/r/87leznqx2a.ffs@tglx
-rw-r--r-- | kernel/irq/msi.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/kernel/irq/msi.c b/kernel/irq/msi.c index 173bc04f9fe5..2bdfce5edafd 100644 --- a/kernel/irq/msi.c +++ b/kernel/irq/msi.c @@ -887,12 +887,11 @@ int __msi_domain_alloc_irqs(struct irq_domain *domain, struct device *dev, ret = msi_init_virq(domain, virq + i, vflags); if (ret) return ret; - - if (info->flags & MSI_FLAG_DEV_SYSFS) { - ret = msi_sysfs_populate_desc(dev, desc); - if (ret) - return ret; - } + } + if (info->flags & MSI_FLAG_DEV_SYSFS) { + ret = msi_sysfs_populate_desc(dev, desc); + if (ret) + return ret; } allocated++; } |