libbinder: O_CLOFORK

You can't use binder after forking, so we can drop the FD. The binder
driver doesn't support this (once the FD is open, we would need to
open a new context in the child process). So, the userspace API would
need to handle resetting all state. However, in general, handling this
for multi-threaded processes (because of needing to take all locks by
all libraries used by all threads and restoring state, etc...) is too
complicated to make work in Android.

Bug: 232904068
Test: binderLibTest
Change-Id: I38c354af2c69804a40dc2774086a9ab77d158ede
diff --git a/libs/binder/ProcessState.cpp b/libs/binder/ProcessState.cpp
index 68958e6..433885d 100644
--- a/libs/binder/ProcessState.cpp
+++ b/libs/binder/ProcessState.cpp
@@ -175,6 +175,10 @@
     // the thread handler is installed
     if (gProcess) {
         gProcess->mForked = true;
+
+        // "O_CLOFORK"
+        close(gProcess->mDriverFD);
+        gProcess->mDriverFD = -1;
     }
     gProcessMutex.unlock();
 }