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

Commit 9e79afb8 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: ipa: fix delete dependency bug in IPA RM"

parents 1d19ba65 112bf876
Loading
Loading
Loading
Loading
+4 −1
Original line number Original line Diff line number Diff line
@@ -609,6 +609,7 @@ int ipa_rm_resource_delete_dependency(struct ipa_rm_resource *resource,
	unsigned long consumer_flags;
	unsigned long consumer_flags;
	bool state_changed = false;
	bool state_changed = false;
	bool release_consumer = false;
	bool release_consumer = false;
	enum ipa_rm_event evt;
	if (!resource || !depends_on) {
	if (!resource || !depends_on) {
		IPA_RM_ERR("invalid params\n");
		IPA_RM_ERR("invalid params\n");
		return -EINVAL;
		return -EINVAL;
@@ -640,6 +641,7 @@ int ipa_rm_resource_delete_dependency(struct ipa_rm_resource *resource,
			resource)->pending_release == 0) {
			resource)->pending_release == 0) {
			resource->state = IPA_RM_RELEASED;
			resource->state = IPA_RM_RELEASED;
			state_changed = true;
			state_changed = true;
			evt = IPA_RM_RESOURCE_RELEASED;
		}
		}
		spin_unlock_irqrestore(&depends_on->state_lock, consumer_flags);
		spin_unlock_irqrestore(&depends_on->state_lock, consumer_flags);
		break;
		break;
@@ -655,6 +657,7 @@ int ipa_rm_resource_delete_dependency(struct ipa_rm_resource *resource,
				resource)->pending_request == 0) {
				resource)->pending_request == 0) {
			resource->state = IPA_RM_GRANTED;
			resource->state = IPA_RM_GRANTED;
			state_changed = true;
			state_changed = true;
			evt = IPA_RM_RESOURCE_GRANTED;
		}
		}
		spin_unlock_irqrestore(&depends_on->state_lock, consumer_flags);
		spin_unlock_irqrestore(&depends_on->state_lock, consumer_flags);
		break;
		break;
@@ -667,7 +670,7 @@ int ipa_rm_resource_delete_dependency(struct ipa_rm_resource *resource,
		ipa_rm_peers_list_has_last_peer(resource->peers_list)) {
		ipa_rm_peers_list_has_last_peer(resource->peers_list)) {
		(void) ipa_rm_wq_send_cmd(IPA_RM_WQ_NOTIFY_PROD,
		(void) ipa_rm_wq_send_cmd(IPA_RM_WQ_NOTIFY_PROD,
				resource->name,
				resource->name,
				resource->state,
				evt,
				false);
				false);
		result = -EINPROGRESS;
		result = -EINPROGRESS;
	}
	}