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

Commit 86100918 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: ipa3: Change spin lock in release_gsi_channel"

parents 194b0bdb c0b30d82
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -1609,6 +1609,7 @@ int ipa3_release_gsi_channel(u32 clnt_hdl)
	struct ipa3_ep_context *ep;
	int result = -EFAULT;
	enum gsi_status gsi_res;
	unsigned long flags;

	IPADBG("entry\n");
	if (clnt_hdl >= ipa3_ctx->ipa_num_pipes ||
@@ -1623,10 +1624,9 @@ int ipa3_release_gsi_channel(u32 clnt_hdl)
		IPA_ACTIVE_CLIENTS_INC_EP(ipa3_get_client_mapping(clnt_hdl));

	/* Set the disconnect in progress flag to avoid calling cb.*/
	spin_lock(&ipa3_ctx->disconnect_lock);
	spin_lock_irqsave(&ipa3_ctx->disconnect_lock, flags);
	atomic_set(&ep->disconnect_in_progress, 1);
	spin_unlock(&ipa3_ctx->disconnect_lock);

	spin_unlock_irqrestore(&ipa3_ctx->disconnect_lock, flags);

	gsi_res = gsi_dealloc_channel(ep->gsi_chan_hdl);
	if (gsi_res != GSI_STATUS_SUCCESS) {
@@ -1646,9 +1646,9 @@ int ipa3_release_gsi_channel(u32 clnt_hdl)
	if (!ep->keep_ipa_awake)
		IPA_ACTIVE_CLIENTS_DEC_EP(ipa3_get_client_mapping(clnt_hdl));

	spin_lock(&ipa3_ctx->disconnect_lock);
	spin_lock_irqsave(&ipa3_ctx->disconnect_lock, flags);
	memset(&ipa3_ctx->ep[clnt_hdl], 0, sizeof(struct ipa3_ep_context));
	spin_unlock(&ipa3_ctx->disconnect_lock);
	spin_unlock_irqrestore(&ipa3_ctx->disconnect_lock, flags);

	IPADBG("exit\n");
	return 0;