Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 97e051a2 authored by Amir Samuelov's avatar Amir Samuelov Committed by Gerrit - the friendly Code Review server
Browse files

spcom: spcom_get_next_request_size() unlock while waiting for rx data



spcom server app might open the channel before the SP client app.
The asynchronous CONNECTED callback might be called while the server
is waiting for data.
Avoid locking the channel while waiting for data to avoid dead lock
while handling the CONNECTED callabck.

Change-Id: I7c576f240b60720a6f1461b3e48f4422c110e7c4
Signed-off-by: default avatarAmir Samuelov <amirs@codeaurora.org>
parent e08dfa6b
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1026,10 +1026,12 @@ static int spcom_get_next_request_size(struct spcom_channel *ch)
			 ch->name, ch->actual_rx_size);
		goto exit_ready;
	}
	mutex_unlock(&ch->lock); /* unlock while waiting */

	pr_debug("Wait for Rx Done, ch [%s].\n", ch->name);
	wait_for_completion(&ch->rx_done);

	mutex_lock(&ch->lock); /* re-lock after waiting */
	/* Check Rx Abort on SP reset */
	if (ch->rx_abort) {
		pr_err("rx aborted.\n");