* PCI/MSI: Destroy sysfs before freeing entries
@ 2021-11-09 13:53 Thomas Gleixner
2021-11-09 15:39 ` Greg Kroah Hartmann
2021-11-11 8:57 ` [tip: irq/urgent] " tip-bot2 for Thomas Gleixner
0 siblings, 2 replies; 3+ messages in thread
From: Thomas Gleixner @ 2021-11-09 13:53 UTC (permalink / raw)
To: LKML; +Cc: Greg Kroah Hartmann, Bjorn Helgaas, Marc Zyngier, linux-pci
free_msi_irqs() frees the MSI entries before destroying the sysfs entries
which are exposing them. Nothing prevents a concurrent free while a sysfs
file is read and accesses the possibly freed entry.
Move the sysfs release ahead of freeing the entries.
Fixes: 1c51b50c2995 ("PCI/MSI: Export MSI mode using attributes, not kobjects")
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
---
drivers/pci/msi.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -370,6 +370,11 @@ static void free_msi_irqs(struct pci_dev
for (i = 0; i < entry->nvec_used; i++)
BUG_ON(irq_has_action(entry->irq + i));
+ if (dev->msi_irq_groups) {
+ msi_destroy_sysfs(&dev->dev, dev->msi_irq_groups);
+ dev->msi_irq_groups = NULL;
+ }
+
pci_msi_teardown_msi_irqs(dev);
list_for_each_entry_safe(entry, tmp, msi_list, list) {
@@ -381,11 +386,6 @@ static void free_msi_irqs(struct pci_dev
list_del(&entry->list);
free_msi_entry(entry);
}
-
- if (dev->msi_irq_groups) {
- msi_destroy_sysfs(&dev->dev, dev->msi_irq_groups);
- dev->msi_irq_groups = NULL;
- }
}
static void pci_intx_for_msi(struct pci_dev *dev, int enable)
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: PCI/MSI: Destroy sysfs before freeing entries
2021-11-09 13:53 PCI/MSI: Destroy sysfs before freeing entries Thomas Gleixner
@ 2021-11-09 15:39 ` Greg Kroah Hartmann
2021-11-11 8:57 ` [tip: irq/urgent] " tip-bot2 for Thomas Gleixner
1 sibling, 0 replies; 3+ messages in thread
From: Greg Kroah Hartmann @ 2021-11-09 15:39 UTC (permalink / raw)
To: Thomas Gleixner; +Cc: LKML, Bjorn Helgaas, Marc Zyngier, linux-pci
On Tue, Nov 09, 2021 at 02:53:57PM +0100, Thomas Gleixner wrote:
> free_msi_irqs() frees the MSI entries before destroying the sysfs entries
> which are exposing them. Nothing prevents a concurrent free while a sysfs
> file is read and accesses the possibly freed entry.
>
> Move the sysfs release ahead of freeing the entries.
>
> Fixes: 1c51b50c2995 ("PCI/MSI: Export MSI mode using attributes, not kobjects")
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> Cc: stable@vger.kernel.org
> ---
> drivers/pci/msi.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
^ permalink raw reply [flat|nested] 3+ messages in thread
* [tip: irq/urgent] PCI/MSI: Destroy sysfs before freeing entries
2021-11-09 13:53 PCI/MSI: Destroy sysfs before freeing entries Thomas Gleixner
2021-11-09 15:39 ` Greg Kroah Hartmann
@ 2021-11-11 8:57 ` tip-bot2 for Thomas Gleixner
1 sibling, 0 replies; 3+ messages in thread
From: tip-bot2 for Thomas Gleixner @ 2021-11-11 8:57 UTC (permalink / raw)
To: linux-tip-commits
Cc: Thomas Gleixner, Greg Kroah-Hartman, Bjorn Helgaas, stable, x86,
linux-kernel, maz
The following commit has been merged into the irq/urgent branch of tip:
Commit-ID: 3735459037114d31e5acd9894fad9aed104231a0
Gitweb: https://git.kernel.org/tip/3735459037114d31e5acd9894fad9aed104231a0
Author: Thomas Gleixner <tglx@linutronix.de>
AuthorDate: Tue, 09 Nov 2021 14:53:57 +01:00
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Thu, 11 Nov 2021 09:50:31 +01:00
PCI/MSI: Destroy sysfs before freeing entries
free_msi_irqs() frees the MSI entries before destroying the sysfs entries
which are exposing them. Nothing prevents a concurrent free while a sysfs
file is read and accesses the possibly freed entry.
Move the sysfs release ahead of freeing the entries.
Fixes: 1c51b50c2995 ("PCI/MSI: Export MSI mode using attributes, not kobjects")
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Bjorn Helgaas <helgaas@kernel.org>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/87sfw5305m.ffs@tglx
---
drivers/pci/msi.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
index 7043301..48e3f4e 100644
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -368,6 +368,11 @@ static void free_msi_irqs(struct pci_dev *dev)
for (i = 0; i < entry->nvec_used; i++)
BUG_ON(irq_has_action(entry->irq + i));
+ if (dev->msi_irq_groups) {
+ msi_destroy_sysfs(&dev->dev, dev->msi_irq_groups);
+ dev->msi_irq_groups = NULL;
+ }
+
pci_msi_teardown_msi_irqs(dev);
list_for_each_entry_safe(entry, tmp, msi_list, list) {
@@ -379,11 +384,6 @@ static void free_msi_irqs(struct pci_dev *dev)
list_del(&entry->list);
free_msi_entry(entry);
}
-
- if (dev->msi_irq_groups) {
- msi_destroy_sysfs(&dev->dev, dev->msi_irq_groups);
- dev->msi_irq_groups = NULL;
- }
}
static void pci_intx_for_msi(struct pci_dev *dev, int enable)
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-11-11 8:57 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-09 13:53 PCI/MSI: Destroy sysfs before freeing entries Thomas Gleixner
2021-11-09 15:39 ` Greg Kroah Hartmann
2021-11-11 8:57 ` [tip: irq/urgent] " tip-bot2 for Thomas Gleixner
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.