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

Commit f423ab17 authored by Xiaoyu Ye's avatar Xiaoyu Ye Committed by Gerrit - the friendly Code Review server
Browse files

dsp: unlock the mutex before return to avoid potential deadlock



Function "q6asm_set_shared_circ_buff" has a potential scenario that
can cause deadlock due to a missing call to unlock mutex before return.
Avoid this potential deadlock by calling the mutex unlock just before
the return of function "q6asm_set_shared_circ_buff".

Change-Id: Ic454eb5eb57c7616d891277c09e0e3bd37e63cd2
Signed-off-by: default avatarXiaoyu Ye <benyxy@codeaurora.org>
parent 9326b2df
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -3541,7 +3541,6 @@ int q6asm_set_shared_circ_buff(struct audio_client *ac,
	if (ac->port[dir].buf) {
		pr_err("%s: Buffer already allocated\n", __func__);
		rc = -EINVAL;
		mutex_unlock(&ac->cmd_lock);
		goto done;
	}

@@ -3564,7 +3563,6 @@ int q6asm_set_shared_circ_buff(struct audio_client *ac,
		pr_err("%s: Audio ION alloc is failed, rc = %d\n", __func__,
				rc);
		kfree(buf_circ);
		mutex_unlock(&ac->cmd_lock);
		goto done;
	}

@@ -3590,8 +3588,8 @@ int q6asm_set_shared_circ_buff(struct audio_client *ac,
			msm_audio_populate_upper_32_bits(buf_circ->phys);
	open->map_region_circ_buf.mem_size_bytes = bytes_to_alloc;

	mutex_unlock(&ac->cmd_lock);
done:
	mutex_unlock(&ac->cmd_lock);
	return rc;
}