Merge "mdss: mdp: Validate null commit for secure display"

This commit is contained in:
Linux Build Service Account 2017-09-26 21:49:58 -07:00 committed by Gerrit - the friendly Code Review server
commit ac9cb81445
3 changed files with 13 additions and 2 deletions

View file

@ -995,6 +995,8 @@ struct mdss_overlay_private {
struct task_struct *thread; struct task_struct *thread;
u8 secure_transition_state; u8 secure_transition_state;
bool cache_null_commit; /* Cache if preceding commit was NULL */
}; };
struct mdss_mdp_set_ot_params { struct mdss_mdp_set_ot_params {

View file

@ -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", pr_err("secure-camera cnt:%d secure video:%d secure display:%d\n",
secure_cam_pipes, secure_vid_pipes, sd_pipes); secure_cam_pipes, secure_vid_pipes, sd_pipes);
return -EINVAL; return -EINVAL;
} else { } else if (mdp5_data->ctl->is_video_mode &&
return 0; ((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;
} }
/* /*

View file

@ -2375,6 +2375,8 @@ static void __overlay_set_secure_transition_state(struct msm_fb_data_type *mfd)
/* Reset the secure transition state */ /* Reset the secure transition state */
mdp5_data->secure_transition_state = SECURE_TRANSITION_NONE; 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: * Secure transition would be NONE in two conditions:
* 1. All the features are already disabled and state remains * 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"); ATRACE_BEGIN("sspp_programming");
ret = __overlay_queue_pipes(mfd); ret = __overlay_queue_pipes(mfd);
ATRACE_END("sspp_programming"); ATRACE_END("sspp_programming");
mutex_unlock(&mdp5_data->list_lock); mutex_unlock(&mdp5_data->list_lock);
mdp5_data->kickoff_released = false; mdp5_data->kickoff_released = false;