tls: zero the crypto information from tls_context before freeing
This contains key material in crypto_send_aes_gcm_128 and
crypto_recv_aes_gcm_128.
Introduce union tls_crypto_context, and replace the two identical
unions directly embedded in struct tls_context with it. We can then
use this union to clean up the memory in the new tls_ctx_free()
function.
Fixes: 3c4d755915
("tls: kernel TLS support")
Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
7cba09c6d5
commit
86029d10af
@@ -1055,8 +1055,8 @@ static int tls_read_size(struct strparser *strp, struct sk_buff *skb)
|
||||
goto read_failure;
|
||||
}
|
||||
|
||||
if (header[1] != TLS_VERSION_MINOR(tls_ctx->crypto_recv.version) ||
|
||||
header[2] != TLS_VERSION_MAJOR(tls_ctx->crypto_recv.version)) {
|
||||
if (header[1] != TLS_VERSION_MINOR(tls_ctx->crypto_recv.info.version) ||
|
||||
header[2] != TLS_VERSION_MAJOR(tls_ctx->crypto_recv.info.version)) {
|
||||
ret = -EINVAL;
|
||||
goto read_failure;
|
||||
}
|
||||
@@ -1180,12 +1180,12 @@ int tls_set_sw_offload(struct sock *sk, struct tls_context *ctx, int tx)
|
||||
|
||||
if (tx) {
|
||||
crypto_init_wait(&sw_ctx_tx->async_wait);
|
||||
crypto_info = &ctx->crypto_send;
|
||||
crypto_info = &ctx->crypto_send.info;
|
||||
cctx = &ctx->tx;
|
||||
aead = &sw_ctx_tx->aead_send;
|
||||
} else {
|
||||
crypto_init_wait(&sw_ctx_rx->async_wait);
|
||||
crypto_info = &ctx->crypto_recv;
|
||||
crypto_info = &ctx->crypto_recv.info;
|
||||
cctx = &ctx->rx;
|
||||
aead = &sw_ctx_rx->aead_recv;
|
||||
}
|
||||
|
Reference in New Issue
Block a user