Hi Danijel, Thanks for the patch. On Fri, May 07, 2021 at 06:27:06PM +0800, Danijel Slivka wrote: > This patch fixes segmentation fault during accessing already freed > pci device resource files, as after freeing res_attr and res_attr_wc > elements, in pci_remove_resource_files function, they are left as > dangling pointers. > > Signed-off-by: Danijel Slivka <danijel.slivka@xxxxxxx> > --- > drivers/pci/pci-sysfs.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c > index f8afd54ca3e1..bbdf6c57fcda 100644 > --- a/drivers/pci/pci-sysfs.c > +++ b/drivers/pci/pci-sysfs.c > @@ -1130,12 +1130,14 @@ static void pci_remove_resource_files(struct pci_dev *pdev) > if (res_attr) { > sysfs_remove_bin_file(&pdev->dev.kobj, res_attr); > kfree(res_attr); > + pdev->res_attr[i] = NULL; > } > > res_attr = pdev->res_attr_wc[i]; > if (res_attr) { > sysfs_remove_bin_file(&pdev->dev.kobj, res_attr); > kfree(res_attr); > + pdev->res_attr_wc[i] = NULL; If this patch fixes something, I would expect to see a test like this somewhere: if (pdev->res_attr[i]) pdev->res_attr[i]->size = 0; But I don't see anything like that, so I can't figure out where we actually use res_attr[i] or res_attr_wc[i], except in pci_remove_resource_files() itself. Did you actually see a segmentation fault? If so, where? > } > } > } > -- > 2.20.1 >