memif: fix crash during interface delete
authorDamjan Marion <[email protected]>
Mon, 12 Jun 2017 19:38:35 +0000 (21:38 +0200)
committerChris Luke <[email protected]>
Tue, 13 Jun 2017 03:11:14 +0000 (03:11 +0000)
Change-Id: Ide6d26d6fcc81be6f26ac0abe2cd0d6a0838cfe6
Signed-off-by: Damjan Marion <[email protected]>
src/plugins/memif/memif.c

index f082b58..d21a30e 100644 (file)
@@ -67,6 +67,7 @@ memif_queue_intfd_close (memif_queue_t * mq)
 void
 memif_disconnect (memif_if_t * mif, clib_error_t * err)
 {
+  memif_main_t *mm = &memif_main;
   vnet_main_t *vnm = vnet_get_main ();
   memif_region_t *mr;
   memif_queue_t *mq;
@@ -94,6 +95,9 @@ memif_disconnect (memif_if_t * mif, clib_error_t * err)
   /* close connection socket */
   if (mif->conn_unix_file_index != ~0)
     {
+      memif_socket_file_t *msf = vec_elt_at_index (mm->socket_files,
+                                                  mif->socket_file_index);
+      hash_unset (msf->dev_instance_by_fd, mif->conn_fd);
       memif_file_del_by_index (mif->conn_unix_file_index);
       mif->conn_unix_file_index = ~0;
     }