]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
PCI: endpoint: Avoid creating sub-groups asynchronously
authorLiu Song <liu.song13@zte.com.cn>
Thu, 10 Jul 2025 06:38:45 +0000 (14:38 +0800)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 23 Dec 2025 22:03:45 +0000 (16:03 -0600)
commit7c5c7d06bd1f86d2c3ebe62be903a4ba42db4d2c
tree1a28d286795af916de9eb47925727f9cbc280a70
parentad0c6da5be901f5c181490f683d22b416059bccb
PCI: endpoint: Avoid creating sub-groups asynchronously

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: e85a2d783762 ("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
drivers/pci/endpoint/pci-ep-cfs.c