On Mon, 10 Jun 2024, Dan Carpenter wrote: > There are two issues related to epf_ntb_epc_cleanup(). > 1) It should call epf_ntb_config_sspad_bar_clear(). > 2) The epf_ntb_bind() function should call epf_ntb_epc_cleanup() > to cleanup. > > I also changed the ordering a bit. Unwinding should be done in the > mirror order from how they are allocated. > > Fixes: e35f56bb0330 ("PCI: endpoint: Support NTB transfer between RC and EP") > Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > --- > drivers/pci/endpoint/functions/pci-epf-vntb.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c b/drivers/pci/endpoint/functions/pci-epf-vntb.c > index 7f05a44e9a9f..874cb097b093 100644 > --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c > +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c > @@ -799,8 +799,9 @@ static int epf_ntb_epc_init(struct epf_ntb *ntb) > */ > static void epf_ntb_epc_cleanup(struct epf_ntb *ntb) > { > - epf_ntb_db_bar_clear(ntb); > epf_ntb_mw_bar_clear(ntb, ntb->num_mws); > + epf_ntb_db_bar_clear(ntb); > + epf_ntb_config_sspad_bar_clear(ntb); > } > > #define EPF_NTB_R(_name) \ > @@ -1337,7 +1338,7 @@ static int epf_ntb_bind(struct pci_epf *epf) > ret = pci_register_driver(&vntb_pci_driver); > if (ret) { > dev_err(dev, "failure register vntb pci driver\n"); > - goto err_bar_alloc; > + goto err_epc_cleanup; > } > > ret = vpci_scan_bus(ntb); > @@ -1348,6 +1349,8 @@ static int epf_ntb_bind(struct pci_epf *epf) > > err_unregister: > pci_unregister_driver(&vntb_pci_driver); > +err_epc_cleanup: > + epf_ntb_epc_cleanup(ntb); > err_bar_alloc: > epf_ntb_config_spad_bar_free(ntb); Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx> -- i.