svn commit: r351839 - stable/11/sys/compat/linuxkpi/common/src

Hans Petter Selasky hselasky at FreeBSD.org
Thu Sep 5 09:23:06 UTC 2019


Author: hselasky
Date: Thu Sep  5 09:23:05 2019
New Revision: 351839
URL: https://svnweb.freebsd.org/changeset/base/351839

Log:
  MFC r347387:
  Fix memory leak of PCI BUS structure in the LinuxKPI.
  
  Sponsored by:	Mellanox Technologies

Modified:
  stable/11/sys/compat/linuxkpi/common/src/linux_pci.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/compat/linuxkpi/common/src/linux_pci.c
==============================================================================
--- stable/11/sys/compat/linuxkpi/common/src/linux_pci.c	Thu Sep  5 09:20:15 2019	(r351838)
+++ stable/11/sys/compat/linuxkpi/common/src/linux_pci.c	Thu Sep  5 09:23:05 2019	(r351839)
@@ -171,12 +171,10 @@ linux_pci_attach(device_t dev)
 		pdev->dev.irq = LINUX_IRQ_INVALID;
 	pdev->irq = pdev->dev.irq;
 
-	if (pdev->bus == NULL) {
-		pbus = malloc(sizeof(*pbus), M_DEVBUF, M_WAITOK | M_ZERO);
-		pbus->self = pdev;
-		pbus->number = pci_get_bus(dev);
-		pdev->bus = pbus;
-	}
+	pbus = malloc(sizeof(*pbus), M_DEVBUF, M_WAITOK | M_ZERO);
+	pbus->self = pdev;
+	pbus->number = pci_get_bus(dev);
+	pdev->bus = pbus;
 
 	spin_lock(&pci_lock);
 	list_add(&pdev->links, &pci_devices);
@@ -184,6 +182,7 @@ linux_pci_attach(device_t dev)
 
 	error = pdrv->probe(pdev, id);
 	if (error) {
+		free(pdev->bus, M_DEVBUF);
 		spin_lock(&pci_lock);
 		list_del(&pdev->links);
 		spin_unlock(&pci_lock);
@@ -202,6 +201,7 @@ linux_pci_detach(device_t dev)
 	pdev = device_get_softc(dev);
 
 	pdev->pdrv->remove(pdev);
+	free(pdev->bus, M_DEVBUF);
 
 	spin_lock(&pci_lock);
 	list_del(&pdev->links);


More information about the svn-src-all mailing list