All of lore.kernel.org
 help / color / mirror / Atom feed
* 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.