/* * Free a session. */ static int cesa_ocf_freesession(device_t dev, u_int64_t tid) { struct cesa_ocf_data *cesa_ocf_cur_ses; u_int32_t sid = CRYPTO_SESID2LID(tid); //unsigned long flags; dprintk("%s() %d \n", __FUNCTION__, sid); if ( (sid >= CESA_OCF_MAX_SES) || (cesa_ocf_sessions[sid] == NULL) ) { printk("%s,%d: EINVAL can't free session %d \n", __FILE__, __LINE__, sid); return(EINVAL); } /* Silently accept and return */ if (sid == 0) return(0); /* release session from HAL */ cesa_ocf_cur_ses = cesa_ocf_sessions[sid]; if (cesa_ocf_cur_ses->sid_encrypt != -1) { mvCesaSessionClose(cesa_ocf_cur_ses->sid_encrypt); } if (cesa_ocf_cur_ses->sid_decrypt != -1) { mvCesaSessionClose(cesa_ocf_cur_ses->sid_decrypt); } if (cesa_ocf_cur_ses->frag_wa_encrypt != -1) { mvCesaSessionClose(cesa_ocf_cur_ses->frag_wa_encrypt); } if (cesa_ocf_cur_ses->frag_wa_decrypt != -1) { mvCesaSessionClose(cesa_ocf_cur_ses->frag_wa_decrypt); } if (cesa_ocf_cur_ses->frag_wa_auth != -1) { mvCesaSessionClose(cesa_ocf_cur_ses->frag_wa_auth); } kfree(cesa_ocf_cur_ses); cesa_ocf_sessions[sid] = NULL; return 0; }
MV_STATUS mvCesaIfSessionClose(short sid) { return mvCesaSessionClose(sid); }