static int is_session_invalid(u32 decoding, u32 flags) { int is_secure; struct client_security_info sec_info; int client_count = 0; int secure_session_running = 0; is_secure = (flags & VCD_CP_SESSION) ? 1:0; client_count = vcd_get_clients_security_info(&sec_info); secure_session_running = (sec_info.secure_enc > 0) || (sec_info.secure_dec > 0); if (!is_secure) { if (secure_session_running) { pr_err("Secure vs non secure session: FAILURE\n"); return -EACCES; } } return 0; }
static int is_session_invalid(u32 decoding, u32 flags) { int is_secure; struct client_security_info sec_info; int client_count = 0; int secure_session_running = 0; is_secure = (flags & VCD_CP_SESSION) ? 1 : 0; client_count = vcd_get_clients_security_info(&sec_info); secure_session_running = (sec_info.secure_enc > 0) || (sec_info.secure_dec > 0); if (!decoding && is_secure) { if ((sec_info.secure_dec == 1)) { VCD_MSG_LOW("SE-SD: SUCCESS\n"); } else { VCD_MSG_LOW("SE is permitted only with SD: FAILURE\n"); return -EACCES; } } else if (!decoding && !is_secure) { if (secure_session_running) { VCD_MSG_LOW("SD-NSE: FAILURE\n"); VCD_MSG_LOW("SE-NSE: FAILURE\n"); return -EACCES; } } else if (decoding && is_secure) { if (client_count > 0) { VCD_MSG_LOW("S/NS-SD: FAILURE\n"); if (sec_info.secure_enc > 0 || sec_info.non_secure_enc > 0) { return -EAGAIN; } return -EACCES; } } else { if (sec_info.secure_dec > 0) { VCD_MSG_LOW("SD-NSD: FAILURE\n"); return -EACCES; } } return 0; }