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

Commit 315de9a1 authored by Animesh Kishore's avatar Animesh Kishore
Browse files

mdss: mdp: Validate null commit for secure display



Secure display entry/exit should be accompanied
by null commit in video mode to make sure there is
no non secure access.

Change-Id: I7928a2465de9c46f69e963977931f7a6618f01fb
Signed-off-by: default avatarAnimesh Kishore <animeshk@codeaurora.org>
parent 14f6bfee
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -995,6 +995,8 @@ struct mdss_overlay_private {
	struct task_struct *thread;

	u8 secure_transition_state;

	bool cache_null_commit; /* Cache if preceding commit was NULL */
};

struct mdss_mdp_set_ot_params {
+8 −2
Original line number Diff line number Diff line
@@ -1853,9 +1853,15 @@ static int __validate_secure_session(struct mdss_overlay_private *mdp5_data)
		pr_err("secure-camera cnt:%d secure video:%d secure display:%d\n",
				secure_cam_pipes, secure_vid_pipes, sd_pipes);
		return -EINVAL;
	} else {
		return 0;
	} else if (mdp5_data->ctl->is_video_mode &&
		((sd_pipes && !mdp5_data->sd_enabled) ||
		(!sd_pipes && mdp5_data->sd_enabled)) &&
		!mdp5_data->cache_null_commit) {
		pr_err("NULL commit missing before display secure session entry/exit\n");
		return -EINVAL;
	}

	return 0;
}

/*
+3 −0
Original line number Diff line number Diff line
@@ -2375,6 +2375,8 @@ static void __overlay_set_secure_transition_state(struct msm_fb_data_type *mfd)
	/* Reset the secure transition state */
	mdp5_data->secure_transition_state = SECURE_TRANSITION_NONE;

	mdp5_data->cache_null_commit = list_empty(&mdp5_data->pipes_used);

	/*
	 * Secure transition would be NONE in two conditions:
	 * 1. All the features are already disabled and state remains
@@ -2584,6 +2586,7 @@ int mdss_mdp_overlay_kickoff(struct msm_fb_data_type *mfd,
	ATRACE_BEGIN("sspp_programming");
	ret = __overlay_queue_pipes(mfd);
	ATRACE_END("sspp_programming");

	mutex_unlock(&mdp5_data->list_lock);

	mdp5_data->kickoff_released = false;