vppinfra: add clib_mem_free_s

IPsec zero-es all allocated key memory including memory sur-allocated by
the allocator.
Move it to its own function in clib mem infra to make it easier to
instrument.

Type: refactor

Change-Id: Icd1c44d18b741e723864abce75ac93e2eff74b61
Signed-off-by: Benoît Ganne <bganne@cisco.com>
(cherry picked from commit 78af0a8c5f)
This commit is contained in:
Benoît Ganne
2019-04-29 17:27:24 +02:00
committed by Andrew Yourtchenko
parent 54ff70cb3c
commit 952d4e7fb9
3 changed files with 12 additions and 12 deletions

View File

@ -40,9 +40,7 @@ crypto_ia32_key_handler (vlib_main_t * vm, vnet_crypto_key_op_t kop,
if (cm->key_data[idx] == 0)
return;
clib_memset_u8 (cm->key_data[idx], 0,
clib_mem_size (cm->key_data[idx]));
clib_mem_free (cm->key_data[idx]);
clib_mem_free_s (cm->key_data[idx]);
cm->key_data[idx] = 0;
return;
}
@ -51,9 +49,7 @@ crypto_ia32_key_handler (vlib_main_t * vm, vnet_crypto_key_op_t kop,
if (kop == VNET_CRYPTO_KEY_OP_MODIFY && cm->key_data[idx])
{
clib_memset_u8 (cm->key_data[idx], 0,
clib_mem_size (cm->key_data[idx]));
clib_mem_free (cm->key_data[idx]);
clib_mem_free_s (cm->key_data[idx]);
}
cm->key_data[idx] = cm->key_fn[key->alg] (key);

View File

@ -402,9 +402,7 @@ crypto_ipsecmb_key_handler (vlib_main_t * vm, vnet_crypto_key_op_t kop,
if (imbm->key_data[idx] == 0)
return;
clib_memset_u8 (imbm->key_data[idx], 0,
clib_mem_size (imbm->key_data[idx]));
clib_mem_free (imbm->key_data[idx]);
clib_mem_free_s (imbm->key_data[idx]);
imbm->key_data[idx] = 0;
return;
}
@ -416,9 +414,7 @@ crypto_ipsecmb_key_handler (vlib_main_t * vm, vnet_crypto_key_op_t kop,
if (kop == VNET_CRYPTO_KEY_OP_MODIFY && imbm->key_data[idx])
{
clib_memset_u8 (imbm->key_data[idx], 0,
clib_mem_size (imbm->key_data[idx]));
clib_mem_free (imbm->key_data[idx]);
clib_mem_free_s (imbm->key_data[idx]);
}
kd = imbm->key_data[idx] = clib_mem_alloc_aligned (ad->data_size,

View File

@ -272,6 +272,14 @@ clib_mem_size (void *p)
#endif
}
always_inline void
clib_mem_free_s (void *p)
{
uword size = clib_mem_size (p);
memset_s_inline (p, size, 0, size);
clib_mem_free (p);
}
always_inline void *
clib_mem_get_heap (void)
{