diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
index 510349595f..9955cc7bbb 100644
--- a/src/libxl/libxl_driver.c
+++ b/src/libxl/libxl_driver.c
@@ -3174,12 +3174,13 @@ libxlDomainAttachNetDevice(libxlDriverPrivatePtr driver,
         goto cleanup;
     }
 
-    vm->def->nets[vm->def->nnets++] = net;
     ret = 0;
 
  cleanup:
     libxl_device_nic_dispose(&nic);
-    if (ret) {
+    if (!ret) {
+        vm->def->nets[vm->def->nnets++] = net;
+    } else {
         virDomainNetRemoveHostdev(vm->def, net);
         networkReleaseActualDevice(vm->def, net);
     }