[PATCH] nfc: add missing complete() to avoid hung

From: Pavel Skripkin
Date: Tue Jun 22 2021 - 12:00:03 EST


/* .... */

Signed-off-by: Pavel Skripkin <paskripkin@xxxxxxxxx>
---
drivers/nfc/port100.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/drivers/nfc/port100.c b/drivers/nfc/port100.c
index 8e4d355dc3ae..c8c421af49b7 100644
--- a/drivers/nfc/port100.c
+++ b/drivers/nfc/port100.c
@@ -805,9 +805,15 @@ static void port100_build_cmd_frame(struct port100 *dev, u8 cmd_code,
port100_tx_frame_finish(skb->data);
}

+struct port100_sync_cmd_response {
+ struct sk_buff *resp;
+ struct completion done;
+};
+
static void port100_send_async_complete(struct port100 *dev)
{
struct port100_cmd *cmd = dev->cmd;
+ struct port100_sync_cmd_response *cmd_resp = cmd->complete_cb_context;
int status = cmd->status;

struct sk_buff *req = cmd->req;
@@ -831,6 +837,7 @@ static void port100_send_async_complete(struct port100 *dev)
cmd->complete_cb(dev, cmd->complete_cb_context, resp);

done:
+ complete(&cmd_resp->done);
kfree(cmd);
}

@@ -883,11 +890,6 @@ static int port100_send_cmd_async(struct port100 *dev, u8 cmd_code,
return rc;
}

-struct port100_sync_cmd_response {
- struct sk_buff *resp;
- struct completion done;
-};
-
static void port100_wq_cmd_complete(struct work_struct *work)
{
struct port100 *dev = container_of(work, struct port100,
--
2.32.0


--MP_/UArs2MqmBR/+ql7l/In2wU7--