Merge "Revert "Reimplement the "adb root" command to more closely match its previous behavior""
diff --git a/adb/services.c b/adb/services.c
index 6940be8..6bbd6f8 100644
--- a/adb/services.c
+++ b/adb/services.c
@@ -125,12 +125,14 @@
             return;
         }
 
+        property_set("service.adb.root", "1");
         snprintf(buf, sizeof(buf), "restarting adbd as root\n");
         writex(fd, buf, strlen(buf));
         adb_close(fd);
 
-        // This will cause a property trigger in init.rc to restart us
-        property_set("service.adb.root", "1");
+        // quit, and init will restart us as root
+        sleep(1);
+        exit(1);
     }
 }
 
diff --git a/rootdir/init.rc b/rootdir/init.rc
index 17374f0..d035345 100644
--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -379,18 +379,6 @@
 on property:ro.kernel.qemu=1
     start adbd
 
-# This property trigger has added to imitiate the previous behavior of "adb root".
-# The adb gadget driver used to reset the USB bus when the adbd daemon exited,
-# and the host side adb relied on this behavior to force it to reconnect with the
-# new adbd instance after init relaunches it. So now we force the USB bus to reset
-# here when adbd sets the service.adb.root property to 1.  We also restart adbd here
-# rather than waiting for init to notice its death and restarting it so the timing
-# of USB resetting and adb restarting more closely matches the previous behavior.
-on property:service.adb.root=1
-    write /sys/class/android_usb/android0/enable 0
-    restart adbd
-    write /sys/class/android_usb/android0/enable 1
-
 service servicemanager /system/bin/servicemanager
     class core
     user system