On 2/16/23 19:55, Manivannan Sadhasivam wrote: > On Wed, Feb 15, 2023 at 12:21:53PM +0900, Damien Le Moal wrote: >> The irq_raised completion used to detect the end of a test case is >> initialized when the test device is probed, but never reinitialized >> again before a test case. As a result, the irq_raised completion >> synchronization is effective only for the first ioctl test case >> executed. Any subsequent call to wait_for_completion() by another >> ioctl() call will immediately return, potentially too early, leading to >> false positive failures. >> >> Fix this by reinitializing the irq_raised completion before starting a >> new ioctl() test command. >> >> Signed-off-by: Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx> > > Fixes tag? CC stable? I could not find a ref for this one... git blame did not lead to anything. Not sure if this file was renamed in the past or something. > >> --- >> drivers/misc/pci_endpoint_test.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/drivers/misc/pci_endpoint_test.c b/drivers/misc/pci_endpoint_test.c >> index c1370950c79d..baab08f983a2 100644 >> --- a/drivers/misc/pci_endpoint_test.c >> +++ b/drivers/misc/pci_endpoint_test.c >> @@ -725,6 +725,10 @@ static long pci_endpoint_test_ioctl(struct file *file, unsigned int cmd, >> struct pci_dev *pdev = test->pdev; >> >> mutex_lock(&test->mutex); >> + >> + reinit_completion(&test->irq_raised); >> + test->last_irq = -1; > > -ENODATA? Sure. Anything works here. -- Damien Le Moal Western Digital Research