Merge cherrypicks of [15800897, 15800899, 15800901, 15800903, 15800905, 15801007, 15800676, 15800678, 15800969, 15800800] into security-aosp-qt-release

Change-Id: Icfdf3a4b66055213724c15f84cca4c6910474d97
diff --git a/libs/binder/IServiceManager.cpp b/libs/binder/IServiceManager.cpp
index 4ba6c2a..8cd2d45 100644
--- a/libs/binder/IServiceManager.cpp
+++ b/libs/binder/IServiceManager.cpp
@@ -147,7 +147,8 @@
 
         const bool isVendorService =
             strcmp(ProcessState::self()->getDriverName().c_str(), "/dev/vndbinder") == 0;
-        const long timeout = uptimeMillis() + 5000;
+        const long timeout = 5000;
+        int64_t startTime = uptimeMillis();
         if (!gSystemBootCompleted && !isVendorService) {
             // Vendor code can't access system properties
             char bootCompleted[PROPERTY_VALUE_MAX];
@@ -158,7 +159,7 @@
         const long sleepTime = gSystemBootCompleted ? 1000 : 100;
 
         int n = 0;
-        while (uptimeMillis() < timeout) {
+        while (uptimeMillis() - startTime < timeout) {
             n++;
             ALOGI("Waiting for service '%s' on '%s'...", String8(name).string(),
                 ProcessState::self()->getDriverName().c_str());