On Thu, Oct 17, 2024 at 10:06:48AM +0900, Damien Le Moal wrote: > Use cancel_delayed_work_sync() in pci_epf_test_epc_deinit() to ensure > that the command handler is really stopped before proceeding with DMA > and BAR cleanup. > > The same change is also done in pci_epf_test_link_down() to ensure that > the link down handling completes with the command handler fully stopped. > > Signed-off-by: Damien Le Moal <dlemoal@xxxxxxxxxx> Reviewed-by: Frank Li <Frank.Li@xxxxxxx> > --- > Changes from v1: > - Corrected typos/grammar in commit message > > drivers/pci/endpoint/functions/pci-epf-test.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/endpoint/functions/pci-epf-test.c > index a73bc0771d35..c2e7f67e5107 100644 > --- a/drivers/pci/endpoint/functions/pci-epf-test.c > +++ b/drivers/pci/endpoint/functions/pci-epf-test.c > @@ -800,7 +800,7 @@ static void pci_epf_test_epc_deinit(struct pci_epf *epf) > { > struct pci_epf_test *epf_test = epf_get_drvdata(epf); > > - cancel_delayed_work(&epf_test->cmd_handler); > + cancel_delayed_work_sync(&epf_test->cmd_handler); > pci_epf_test_clean_dma_chan(epf_test); > pci_epf_test_clear_bar(epf); > } > @@ -931,7 +931,7 @@ static void pci_epf_test_unbind(struct pci_epf *epf) > struct pci_epf_test *epf_test = epf_get_drvdata(epf); > struct pci_epc *epc = epf->epc; > > - cancel_delayed_work(&epf_test->cmd_handler); > + cancel_delayed_work_sync(&epf_test->cmd_handler); > if (epc->init_complete) { > pci_epf_test_clean_dma_chan(epf_test); > pci_epf_test_clear_bar(epf); > -- > 2.47.0 >