OSDN Git Service

release-request-05263112-375a-4b1f-a657-a14bb2a5c5a3-for-git_oc-mr1-release-4185249...
authorandroid-build-team Robot <android-build-team-robot@google.com>
Sun, 16 Jul 2017 07:30:17 +0000 (07:30 +0000)
committerandroid-build-team Robot <android-build-team-robot@google.com>
Sun, 16 Jul 2017 07:30:17 +0000 (07:30 +0000)
Change-Id: I52b62718c4ca52b2e19c198088c3e025d00e0098

EmulatedVolume.cpp
NetlinkManager.cpp
PublicVolume.cpp

index 44ad22a..df91904 100644 (file)
@@ -103,6 +103,8 @@ status_t EmulatedVolume::doMount() {
         LOG(VERBOSE) << "Waiting for FUSE to spin up...";
         usleep(50000); // 50ms
     }
+    /* sdcardfs will have exited already. FUSE will still be running */
+    TEMP_FAILURE_RETRY(waitpid(mFusePid, nullptr, WNOHANG));
 
     return OK;
 }
index b5069a6..0ad182e 100644 (file)
@@ -64,8 +64,11 @@ int NetlinkManager::start() {
         return -1;
     }
 
-    if (setsockopt(mSock, SOL_SOCKET, SO_RCVBUFFORCE, &sz, sizeof(sz)) < 0) {
-        SLOGE("Unable to set uevent socket SO_RCVBUFFORCE option: %s", strerror(errno));
+    // When running in a net/user namespace, SO_RCVBUFFORCE is not available.
+    // Try using SO_RCVBUF first.
+    if ((setsockopt(mSock, SOL_SOCKET, SO_RCVBUF, &sz, sizeof(sz)) < 0) &&
+        (setsockopt(mSock, SOL_SOCKET, SO_RCVBUFFORCE, &sz, sizeof(sz)) < 0)) {
+        SLOGE("Unable to set uevent socket SO_RCVBUF/SO_RCVBUFFORCE option: %s", strerror(errno));
         goto out;
     }
 
index 119d92c..f976c4a 100644 (file)
@@ -190,6 +190,8 @@ status_t PublicVolume::doMount() {
         LOG(VERBOSE) << "Waiting for FUSE to spin up...";
         usleep(50000); // 50ms
     }
+    /* sdcardfs will have exited already. FUSE will still be running */
+    TEMP_FAILURE_RETRY(waitpid(mFusePid, nullptr, WNOHANG));
 
     return OK;
 }