Skip to content

Commit 688d2eb

Browse files
zijun-hukwilczynski
authored andcommitted
PCI: endpoint: Clear secondary (not primary) EPC in pci_epc_remove_epf()
In addition to a primary endpoint controller, an endpoint function may be associated with a secondary endpoint controller, epf->sec_epc, to provide NTB (non-transparent bridge) functionality. Previously, pci_epc_remove_epf() incorrectly cleared epf->epc instead of epf->sec_epc when removing from the secondary endpoint controller. Extend the epc->list_lock coverage and clear either epf->epc or epf->sec_epc as indicated. Link: https://lore.kernel.org/r/20241107-epc_rfc-v2-2-da5b6a99a66f@quicinc.com Fixes: 63840ff ("PCI: endpoint: Add support to associate secondary EPC with EPF") Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> [mani: reworded subject and description] Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> [bhelgaas: commit log] Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org> Cc: stable@vger.kernel.org
1 parent 4acc902 commit 688d2eb

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

drivers/pci/endpoint/pci-epc-core.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -746,18 +746,18 @@ void pci_epc_remove_epf(struct pci_epc *epc, struct pci_epf *epf,
746746
if (IS_ERR_OR_NULL(epc) || !epf)
747747
return;
748748

749+
mutex_lock(&epc->list_lock);
749750
if (type == PRIMARY_INTERFACE) {
750751
func_no = epf->func_no;
751752
list = &epf->list;
753+
epf->epc = NULL;
752754
} else {
753755
func_no = epf->sec_epc_func_no;
754756
list = &epf->sec_epc_list;
757+
epf->sec_epc = NULL;
755758
}
756-
757-
mutex_lock(&epc->list_lock);
758759
clear_bit(func_no, &epc->function_num_map);
759760
list_del(list);
760-
epf->epc = NULL;
761761
mutex_unlock(&epc->list_lock);
762762
}
763763
EXPORT_SYMBOL_GPL(pci_epc_remove_epf);

0 commit comments

Comments
 (0)