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

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

spcom: avoid using stale glink handle



spcom_notify_state() is a callback called by glink upon channel connect.
It is asynchronous callback, that might be called after glink_close().
Avoid storing stale glink handle in such case.

Change-Id: I10359f38ca48f618899673f677a6409b01bc6618
Signed-off-by: default avatarAmir Samuelov <amirs@codeaurora.org>
parent e08dfa6b
Loading
Loading
Loading
Loading
+5 −9
Original line number Diff line number Diff line
@@ -493,13 +493,10 @@ static void spcom_notify_state(void *handle, const void *priv,

		ch->glink_state = event;

		/*
		 * if spcom_notify_state() is called within glink_open()
		 * then ch->glink_handle is not updated yet.
		 */
		if (!ch->glink_handle) {
			pr_debug("update glink_handle, ch [%s].\n", ch->name);
			ch->glink_handle = handle;
		if (!handle) {
			pr_err("inavlid glink_handle, ch [%s].\n", ch->name);
			mutex_unlock(&ch->lock);
			return;
		}

		/* signal before unlock mutex & before calling glink */
@@ -512,8 +509,7 @@ static void spcom_notify_state(void *handle, const void *priv,
		 */

		pr_debug("call glink_queue_rx_intent() ch [%s].\n", ch->name);
		ret = glink_queue_rx_intent(ch->glink_handle,
					    ch, ch->rx_buf_size);
		ret = glink_queue_rx_intent(handle, ch, ch->rx_buf_size);
		if (ret) {
			pr_err("glink_queue_rx_intent() err [%d]\n", ret);
		} else {