mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
PCI/DOE: Fix double free of a duplicate feature's sysfs name
When a DOE feature is reported twice, sysfs_add_file_to_group() fails
with -EEXIST for the second copy and pci_doe_sysfs_feature_populate()
frees that attribute's name, but leaves the pointer in place.
pci_doe_sysfs_feature_remove() frees every name again when the device
is removed, or when a later feature fails to register, so the name is
freed twice:
BUG: KASAN: double-free in pci_doe_sysfs_feature_remove+0x117/0x1b0
Call Trace:
kfree+0x11a/0x420
pci_doe_sysfs_feature_remove+0x117/0x1b0
pci_doe_sysfs_teardown+0x90/0xf0
pci_remove_bus_device+0x128/0x2e0
pci_stop_and_remove_bus_device_locked+0x1d/0x30
remove_store+0xd2/0xf0
Clear the pointer after freeing the name.
Fixes: 2311ab1820 ("PCI/DOE: Expose DOE features via sysfs")
Suggested-by: Alistair Francis <alistair@alistair23.me>
Assisted-by: LLM
Signed-off-by: Donggeun Yoo <donggeunyoo.kernel@gmail.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Alistair Francis <alistair@alistair23.me>
Reviewed-by: Jonathan Cameron <jonathan.cameron@oss.qualcomm.com>
Cc: stable@vger.kernel.org
Link: https://patch.msgid.link/20261003102221.59894-1-donggeunyoo.kernel@gmail.com
This commit is contained in:
parent
cee9395acd
commit
624ee12962
|
|
@ -208,8 +208,9 @@ static int pci_doe_sysfs_feature_populate(struct pci_dev *pdev,
|
|||
pci_warn(pdev, "Failed adding %s to sysfs group\n",
|
||||
attrs[i].attr.name);
|
||||
goto fail;
|
||||
} else
|
||||
kfree(attrs[i].attr.name);
|
||||
}
|
||||
kfree(attrs[i].attr.name);
|
||||
attrs[i].attr.name = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user