chelsio/chtls: fix a double free in chtls_setkey()
The "skb" is freed by the transmit code in cxgb4_ofld_send() and we
shouldn't use it again. But in the current code, if we hit an error
later on in the function then the clean up code will call kfree_skb(skb)
and so it causes a double free.
Set the "skb" to NULL and that makes the kfree_skb() a no-op.
Fixes: d25f2f71f6
("crypto: chtls - Program the TLS session Key")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Link: https://lore.kernel.org/r/X8ilb6PtBRLWiSHp@mwanda
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
832e09798c
commit
391119fb5c
|
@ -391,6 +391,7 @@ int chtls_setkey(struct chtls_sock *csk, u32 keylen,
|
||||||
csk->wr_unacked += DIV_ROUND_UP(len, 16);
|
csk->wr_unacked += DIV_ROUND_UP(len, 16);
|
||||||
enqueue_wr(csk, skb);
|
enqueue_wr(csk, skb);
|
||||||
cxgb4_ofld_send(csk->egress_dev, skb);
|
cxgb4_ofld_send(csk->egress_dev, skb);
|
||||||
|
skb = NULL;
|
||||||
|
|
||||||
chtls_set_scmd(csk);
|
chtls_set_scmd(csk);
|
||||||
/* Clear quiesce for Rx key */
|
/* Clear quiesce for Rx key */
|
||||||
|
|
Loading…
Reference in New Issue