Fixes for stupid mistakes (by me).

+ Only remove netId/permission after doing everything that references them.
+ Return success/failure correctly based on return value of fork/exec.

Conflicts:
	NetworkController.cpp

Change-Id: Iddb8ccdffc104ffed1058ecc2421006beebd568d
diff --git a/NetworkController.cpp b/NetworkController.cpp
index 395798d..93e1c1b 100644
--- a/NetworkController.cpp
+++ b/NetworkController.cpp
@@ -183,8 +183,6 @@
             status = false;
         }
     }
-    mPermissionsController->setPermissionForNetwork(PERMISSION_NONE, netId);
-    mNetIdToInterfaces.erase(netId);
 
     if (netId == getDefaultNetwork()) {
         // Could the default network have changed from below us, after we evaluated the 'if', making
@@ -194,6 +192,9 @@
         setDefaultNetwork(NETID_UNSET);
     }
 
+    mPermissionsController->setPermissionForNetwork(PERMISSION_NONE, netId);
+    mNetIdToInterfaces.erase(netId);
+
 // TODO: Uncomment once this API has been added to bionic.
 #if 0
     _resolv_delete_cache_for_net(netId);