linux/drivers/pci/endpoint
Liu Song d9af3cf58b PCI: endpoint: Avoid creating sub-groups asynchronously
commit 7c5c7d06bd upstream.

The asynchronous creation of sub-groups by a delayed work could lead to a
NULL pointer dereference when the driver directory is removed before the
work completes.

The crash can be easily reproduced with the following commands:

  # cd /sys/kernel/config/pci_ep/functions/pci_epf_test
  # for i in {1..20}; do mkdir test && rmdir test; done

  BUG: kernel NULL pointer dereference, address: 0000000000000088
  ...
  Call Trace:
   configfs_register_group+0x3d/0x190
   pci_epf_cfs_work+0x41/0x110
   process_one_work+0x18f/0x350
   worker_thread+0x25a/0x3a0

Fix this issue by using configfs_add_default_group() API which does not
have the deadlock problem as configfs_register_group() and does not require
the delayed work handler.

Fixes: e85a2d7837 ("PCI: endpoint: Add support in configfs to associate two EPCs with EPF")
Signed-off-by: Liu Song <liu.song13@zte.com.cn>
[mani: slightly reworded the description and added stable list]
Signed-off-by: Manivannan Sadhasivam <mani@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: stable@kernel.org
Link: https://patch.msgid.link/20250710143845409gLM6JdlwPhlHG9iX3F6jK@zte.com.cn
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2026-02-16 10:18:45 +01:00
..
functions PCI: endpoint: pci-epf-test: Limit PCIe BAR size for fixed BARs 2025-11-13 15:34:21 -05:00
Kconfig PCI: consolidate PCI config entry in drivers/pci 2018-11-23 11:45:34 +09:00
Makefile PCI: Add SPDX GPL-2.0 when no license was specified 2018-01-26 11:45:16 -06:00
pci-ep-cfs.c PCI: endpoint: Avoid creating sub-groups asynchronously 2026-02-16 10:18:45 +01:00
pci-epc-core.c PCI: endpoint: Destroy the EPC device in devm_pci_epc_destroy() 2025-02-08 09:57:52 +01:00
pci-epc-mem.c PCI: endpoint: Add kernel-doc for pci_epc_mem_init() API 2023-08-26 16:54:46 +00:00
pci-epf-core.c PCI: endpoint: Fix configfs group removal on driver teardown 2025-08-28 16:30:59 +02:00