virtio: fix use-after-free 61/23561/2
authorBenoît Ganne <bganne@cisco.com>
Wed, 20 Nov 2019 13:32:38 +0000 (14:32 +0100)
committerDave Barach <openvpp@barachs.net>
Wed, 20 Nov 2019 15:21:34 +0000 (15:21 +0000)
Type: fix

Change-Id: Ic67d9da65d937f56ecf994a5504c6351624b32ff
Signed-off-by: Benoît Ganne <bganne@cisco.com>
src/vnet/devices/virtio/pci.c

index 1f569ac..5cbf75f 100644 (file)
@@ -1066,7 +1066,6 @@ virtio_pci_create_if (vlib_main_t * vm, virtio_pci_create_if_args_t * args)
        vlib_pci_device_open (vm, (vlib_pci_addr_t *) & vif->pci_addr,
                             virtio_pci_device_ids, &h)))
     {
-      pool_put (vim->interfaces, vif);
       args->rv = VNET_API_ERROR_INVALID_INTERFACE;
       args->error =
        clib_error_return (error, "pci-addr %U", format_vlib_pci_addr,
@@ -1074,6 +1073,7 @@ virtio_pci_create_if (vlib_main_t * vm, virtio_pci_create_if_args_t * args)
       vlib_log (VLIB_LOG_LEVEL_ERR, vim->log_default, "%U: %s",
                format_vlib_pci_addr, &vif->pci_addr,
                "error encountered on pci device open");
+      pool_put (vim->interfaces, vif);
       return;
     }
   vif->pci_dev_handle = h;