ipsec: fix async crypto linked keys memory leak 70/37870/3
authorBenoît Ganne <bganne@cisco.com>
Tue, 3 Jan 2023 17:35:04 +0000 (18:35 +0100)
committerNeale Ranns <neale@graphiant.com>
Mon, 6 Feb 2023 03:35:48 +0000 (03:35 +0000)
Type: fix

Change-Id: I7bd2696541c8b3824837e187de096fdde19b2c44
Signed-off-by: Benoît Ganne <bganne@cisco.com>
src/vnet/ipsec/ipsec_sa.c

index 295323b..12f8ece 100644 (file)
@@ -484,7 +484,12 @@ ipsec_sa_del (ipsec_sa_t * sa)
   (void) ipsec_call_add_del_callbacks (im, sa, sa_index, 0);
 
   if (ipsec_sa_is_set_IS_ASYNC (sa))
-    vnet_crypto_request_async_mode (0);
+    {
+      vnet_crypto_request_async_mode (0);
+      if (!ipsec_sa_is_set_IS_AEAD (sa))
+       vnet_crypto_key_del (vm, sa->async_op_data.linked_key_index);
+    }
+
   if (ipsec_sa_is_set_UDP_ENCAP (sa) && ipsec_sa_is_set_IS_INBOUND (sa))
     ipsec_unregister_udp_port (clib_net_to_host_u16 (sa->udp_hdr.dst_port),
                               !ipsec_sa_is_set_IS_TUNNEL_V6 (sa));