diff mbox series

[1/3] PCI: Fix double-free in resource attribute error path

Message ID 166067879638.1885802.1955389738707186135.stgit@omen (mailing list archive)
State Superseded
Delegated to: Bjorn Helgaas
Headers show
Series PCI: Expose resource resizing through sysfs | expand

Commit Message

Alex Williamson Aug. 16, 2022, 7:40 p.m. UTC
If pci_create_attr() fails the remaining resource bin attributes are
removed and freed based on the pointer entries which are not cleared
in the case that creation of the bin attribute fails.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
---
 drivers/pci/pci-sysfs.c |    8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
index fc804e08e3cb..9ac92e6a2397 100644
--- a/drivers/pci/pci-sysfs.c
+++ b/drivers/pci/pci-sysfs.c
@@ -1196,8 +1196,14 @@  static int pci_create_attr(struct pci_dev *pdev, int num, int write_combine)
 	res_attr->size = pci_resource_len(pdev, num);
 	res_attr->private = (void *)(unsigned long)num;
 	retval = sysfs_create_bin_file(&pdev->dev.kobj, res_attr);
-	if (retval)
+	if (retval) {
+		if (write_combine)
+			pdev->res_attr_wc[num] = NULL;
+		else
+			pdev->res_attr[num] = NULL;
+
 		kfree(res_attr);
+	}
 
 	return retval;
 }