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

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

Merge "msm: adsprpc: Fix race condition in internal_control"

parents 0bee2e45 2bcad4f4
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -408,6 +408,7 @@ struct fastrpc_file {
	struct mutex perf_mutex;
	struct pm_qos_request pm_qos_req;
	int qos_request;
	struct mutex pm_qos_mutex;
	struct mutex map_mutex;
	struct mutex fl_map_mutex;
	int refcount;
@@ -3116,6 +3117,7 @@ static int fastrpc_file_free(struct fastrpc_file *fl)
	mutex_destroy(&fl->perf_mutex);
	mutex_destroy(&fl->fl_map_mutex);
	mutex_destroy(&fl->map_mutex);
	mutex_destroy(&fl->pm_qos_mutex);
	kfree(fl);
	return 0;
}
@@ -3617,6 +3619,7 @@ static int fastrpc_device_open(struct inode *inode, struct file *filp)
	hlist_add_head(&fl->hn, &me->drivers);
	spin_unlock(&me->hlock);
	mutex_init(&fl->perf_mutex);
	mutex_init(&fl->pm_qos_mutex);
	return 0;
}

@@ -3719,12 +3722,14 @@ static int fastrpc_internal_control(struct fastrpc_file *fl,
		VERIFY(err, latency != 0);
		if (err)
			goto bail;
		mutex_lock(&fl->pm_qos_mutex);
		if (!fl->qos_request) {
			pm_qos_add_request(&fl->pm_qos_req,
				PM_QOS_CPU_DMA_LATENCY, latency);
			fl->qos_request = 1;
		} else
			pm_qos_update_request(&fl->pm_qos_req, latency);
		mutex_unlock(&fl->pm_qos_mutex);
		break;
	case FASTRPC_CONTROL_SMMU:
		if (!me->legacy)