PCI: epf-test: Fix DMA transfer completion initialization
authorDamien Le Moal <dlemoal@kernel.org>
Sat, 15 Apr 2023 02:35:28 +0000 (11:35 +0900)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 23 Jun 2023 20:00:01 +0000 (15:00 -0500)
Reinitialize the transfer_complete DMA transfer completion before calling
tx_submit(), to avoid seeing the DMA transfer complete before the
completion is initialized, thus potentially losing the completion
notification.

Link: https://lore.kernel.org/r/20230415023542.77601-4-dlemoal@kernel.org
Fixes: 8353813c88ef ("PCI: endpoint: Enable DMA tests for endpoints with DMA capabilities")
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Signed-off-by: Lorenzo Pieralisi <lpieralisi@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>
Cc: stable@vger.kernel.org
drivers/pci/endpoint/functions/pci-epf-test.c

index 0f9d2ec..d654197 100644 (file)
@@ -151,10 +151,10 @@ static int pci_epf_test_data_transfer(struct pci_epf_test *epf_test,
                return -EIO;
        }
 
+       reinit_completion(&epf_test->transfer_complete);
        tx->callback = pci_epf_test_dma_callback;
        tx->callback_param = epf_test;
        cookie = tx->tx_submit(tx);
-       reinit_completion(&epf_test->transfer_complete);
 
        ret = dma_submit_error(cookie);
        if (ret) {