firmware: turris-mox-rwtm: Do not complete if there are no waiters
authorMarek Behún <kabel@kernel.org>
Mon, 15 Jul 2024 11:59:10 +0000 (13:59 +0200)
committerArnd Bergmann <arnd@arndb.de>
Mon, 15 Jul 2024 14:57:33 +0000 (16:57 +0200)
Do not complete the "command done" completion if there are no waiters.
This can happen if a wait_for_completion() timed out or was interrupted.

Fixes: 389711b37493 ("firmware: Add Turris Mox rWTM firmware driver")
Signed-off-by: Marek Behún <kabel@kernel.org>
Reviewed-by: Andy Shevchenko <andy@kernel.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
drivers/firmware/turris-mox-rwtm.c

index 31d962cdd6eb2e0c6ba1cb3ea704093a4e95d325..f1f9160c4195facf03baf80932fc8fa740697477 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * Turris Mox rWTM firmware driver
  *
- * Copyright (C) 2019 Marek Behún <kabel@kernel.org>
+ * Copyright (C) 2019, 2024 Marek Behún <kabel@kernel.org>
  */
 
 #include <linux/armada-37xx-rwtm-mailbox.h>
@@ -174,6 +174,9 @@ static void mox_rwtm_rx_callback(struct mbox_client *cl, void *data)
        struct mox_rwtm *rwtm = dev_get_drvdata(cl->dev);
        struct armada_37xx_rwtm_rx_msg *msg = data;
 
+       if (completion_done(&rwtm->cmd_done))
+               return;
+
        rwtm->reply = *msg;
        complete(&rwtm->cmd_done);
 }