avf: fix crash if device is busy 87/12987/4
authorJakub Grajciar <jgrajcia@cisco.com>
Mon, 11 Jun 2018 10:22:46 +0000 (12:22 +0200)
committerDamjan Marion <dmarion@me.com>
Tue, 12 Jun 2018 19:06:41 +0000 (19:06 +0000)
Change-Id: I170d78c8e5f7e16a264c9f226a09693109aece5e
Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
src/plugins/avf/device.c

index c73cf1e..a08a952 100644 (file)
@@ -1075,7 +1075,14 @@ avf_create_if (vlib_main_t * vm, avf_create_if_args_t * args)
     ad->flags |= AVF_DEVICE_F_ELOG;
 
   if ((error = vlib_pci_device_open (&args->addr, avf_pci_device_ids, &h)))
-    goto error;
+    {
+      pool_put (am->devices, ad);
+      args->rv = VNET_API_ERROR_INVALID_INTERFACE;
+      args->error =
+       clib_error_return (error, "pci-addr %U", format_vlib_pci_addr,
+                          &args->addr);
+      return;
+    }
   ad->pci_dev_handle = h;
 
   vlib_pci_set_private_data (h, ad->dev_instance);