adb: fix fd leak when shell fails to create a thread.

Bug: http://b/29565233
Change-Id: Ia59c6dbe5ac033425c11739579e85cbcad1170d1
diff --git a/adb/shell_service.cpp b/adb/shell_service.cpp
index d5132eb..d83622c 100644
--- a/adb/shell_service.cpp
+++ b/adb/shell_service.cpp
@@ -756,13 +756,14 @@
         return ReportError(protocol, error);
     }
 
-    int local_socket = subprocess->ReleaseLocalSocket();
-    D("subprocess creation successful: local_socket_fd=%d, pid=%d", local_socket, subprocess->pid());
+    unique_fd local_socket(subprocess->ReleaseLocalSocket());
+    D("subprocess creation successful: local_socket_fd=%d, pid=%d", local_socket.get(),
+      subprocess->pid());
 
     if (!Subprocess::StartThread(std::move(subprocess), &error)) {
         LOG(ERROR) << "failed to start subprocess management thread: " << error;
         return ReportError(protocol, error);
     }
 
-    return local_socket;
+    return local_socket.release();
 }