cnat: fix spinlock 71/32571/2
authorNathan Skrzypczak <nathan.skrzypczak@gmail.com>
Fri, 4 Jun 2021 09:17:40 +0000 (11:17 +0200)
committerBeno�t Ganne <bganne@cisco.com>
Wed, 9 Jun 2021 12:16:54 +0000 (12:16 +0000)
Type: fix

Change-Id: Id6406702061ada54e51ebcf5c367328605de2b6b
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
src/plugins/cnat/cnat_src_policy.c

index e11e912..cac24b7 100644 (file)
@@ -122,7 +122,10 @@ cnat_allocate_port (u16 * port, ip_protocol_t iproto)
       if (PREDICT_FALSE (*port >= UINT16_MAX))
        *port = clib_bitmap_next_clear (ca->bmap, MIN_SRC_PORT);
       if (PREDICT_FALSE (*port >= UINT16_MAX))
-       return -1;
+       {
+         clib_spinlock_unlock (&ca->lock);
+         return -1;
+       }
     }
   clib_bitmap_set_no_check (ca->bmap, *port, 1);
   *port = clib_host_to_net_u16 (*port);