Changeset View
Changeset View
Standalone View
Standalone View
head/sys/opencrypto/cryptosoft.c
Show First 20 Lines • Show All 1,422 Lines • ▼ Show 20 Lines | if (error) | ||||
swcr_freesession(dev, cses); | swcr_freesession(dev, cses); | ||||
return (error); | return (error); | ||||
} | } | ||||
static void | static void | ||||
swcr_freesession(device_t dev, crypto_session_t cses) | swcr_freesession(device_t dev, crypto_session_t cses) | ||||
{ | { | ||||
struct swcr_session *ses; | struct swcr_session *ses; | ||||
struct swcr_auth *swa; | |||||
struct auth_hash *axf; | |||||
ses = crypto_get_driver_session(cses); | ses = crypto_get_driver_session(cses); | ||||
mtx_destroy(&ses->swcr_lock); | mtx_destroy(&ses->swcr_lock); | ||||
zfree(ses->swcr_encdec.sw_kschedule, M_CRYPTO_DATA); | zfree(ses->swcr_encdec.sw_kschedule, M_CRYPTO_DATA); | ||||
zfree(ses->swcr_auth.sw_ictx, M_CRYPTO_DATA); | |||||
axf = ses->swcr_auth.sw_axf; | zfree(ses->swcr_auth.sw_octx, M_CRYPTO_DATA); | ||||
if (axf != NULL) { | |||||
swa = &ses->swcr_auth; | |||||
if (swa->sw_ictx != NULL) { | |||||
explicit_bzero(swa->sw_ictx, axf->ctxsize); | |||||
free(swa->sw_ictx, M_CRYPTO_DATA); | |||||
} | |||||
if (swa->sw_octx != NULL) { | |||||
explicit_bzero(swa->sw_octx, axf->ctxsize); | |||||
free(swa->sw_octx, M_CRYPTO_DATA); | |||||
} | |||||
} | |||||
} | } | ||||
/* | /* | ||||
* Process a software request. | * Process a software request. | ||||
*/ | */ | ||||
static int | static int | ||||
swcr_process(device_t dev, struct cryptop *crp, int hint) | swcr_process(device_t dev, struct cryptop *crp, int hint) | ||||
{ | { | ||||
▲ Show 20 Lines • Show All 82 Lines • Show Last 20 Lines |