Fix two more memif coverity issues 55/6055/2
authorMilan Lenco <milan.lenco@pantheon.tech>
Wed, 5 Apr 2017 12:42:42 +0000 (14:42 +0200)
committerDamjan Marion <dmarion.lists@gmail.com>
Wed, 5 Apr 2017 15:34:19 +0000 (15:34 +0000)
Change-Id: I935620798d6fe82b99b6bd564749e20a189b4ae3
Signed-off-by: Milan Lenco <milan.lenco@pantheon.tech>
src/plugins/memif/memif.c
src/plugins/memif/node.c

index f0d4aac..dc7ddd8 100644 (file)
@@ -241,6 +241,7 @@ memif_process_connect_req (memif_pending_conn_t * pending_conn,
   uf->private_data = mif->if_index << 1;
   mif->connection = pending_conn->connection;
   pool_put (mm->pending_conns, pending_conn);
+  pending_conn = 0;
 
   memif_connect (vm, mif);
 
@@ -252,7 +253,17 @@ response:
     {
       DEBUG_UNIX_LOG ("Failed to send connection response");
       error = clib_error_return_unix (0, "send fd %d", fd);
-      memif_disconnect (vm, mif);
+      if (pending_conn)
+       memif_remove_pending_conn (pending_conn);
+      else
+       memif_disconnect (vm, mif);
+    }
+  if (retval > 0)
+    {
+      if (shm_fd >= 0)
+       close (shm_fd);
+      if (int_fd >= 0)
+       close (int_fd);
     }
   return error;
 }
index 298472b..659d5df 100644 (file)
@@ -214,20 +214,19 @@ memif_device_input_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
 
          if (PREDICT_FALSE (n_trace > 0))
            {
-             if (b0)
-               {
-                 memif_input_trace_t *tr;
-                 vlib_trace_buffer (vm, node, next0, b0,
-                                    /* follow_chain */ 0);
-                 vlib_set_trace_count (vm, node, --n_trace);
-                 tr = vlib_add_trace (vm, node, b0, sizeof (*tr));
-                 tr->next_index = next0;
-                 tr->hw_if_index = mif->hw_if_index;
-                 tr->ring = rid;
-               }
-
-             if (n_trace && b1)
+             /* b0 */
+             memif_input_trace_t *tr;
+             vlib_trace_buffer (vm, node, next0, b0,
+                                /* follow_chain */ 0);
+             vlib_set_trace_count (vm, node, --n_trace);
+             tr = vlib_add_trace (vm, node, b0, sizeof (*tr));
+             tr->next_index = next0;
+             tr->hw_if_index = mif->hw_if_index;
+             tr->ring = rid;
+
+             if (n_trace)
                {
+                 /* b1 */
                  memif_input_trace_t *tr;
                  vlib_trace_buffer (vm, node, next1, b1,
                                     /* follow_chain */ 0);
@@ -286,17 +285,14 @@ memif_device_input_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
 
          if (PREDICT_FALSE (n_trace > 0))
            {
-             if (b0)
-               {
-                 memif_input_trace_t *tr;
-                 vlib_trace_buffer (vm, node, next0, b0,
-                                    /* follow_chain */ 0);
-                 vlib_set_trace_count (vm, node, --n_trace);
-                 tr = vlib_add_trace (vm, node, b0, sizeof (*tr));
-                 tr->next_index = next0;
-                 tr->hw_if_index = mif->hw_if_index;
-                 tr->ring = rid;
-               }
+             memif_input_trace_t *tr;
+             vlib_trace_buffer (vm, node, next0, b0,
+                                /* follow_chain */ 0);
+             vlib_set_trace_count (vm, node, --n_trace);
+             tr = vlib_add_trace (vm, node, b0, sizeof (*tr));
+             tr->next_index = next0;
+             tr->hw_if_index = mif->hw_if_index;
+             tr->ring = rid;
            }