Disable fdtrack post-fork.

Also delete some fdsan code that attempts to check for the post-fork
state, but never will, because we update the cached pid upon fork.

Bug: http://b/174542867
Test: /data/nativetest64/bionic-unit-tests/bionic-unit-tests
Test: treehugger
Change-Id: I9b748dac9de9b4c741897d93e64d31737e52bf8e
diff --git a/libc/private/bionic_fdtrack.h b/libc/private/bionic_fdtrack.h
index 259897c..c05b32b 100644
--- a/libc/private/bionic_fdtrack.h
+++ b/libc/private/bionic_fdtrack.h
@@ -28,41 +28,43 @@
 
 #pragma once
 
-#include <sys/cdefs.h>
 #include <stdatomic.h>
+#include <sys/cdefs.h>
 
 #include "platform/bionic/fdtrack.h"
 
 #include "bionic/pthread_internal.h"
-#include "private/bionic_tls.h"
 #include "private/ErrnoRestorer.h"
+#include "private/bionic_tls.h"
 
 extern "C" _Atomic(android_fdtrack_hook_t) __android_fdtrack_hook;
+extern "C" bool __android_fdtrack_globally_disabled;
 
 // Macro to record file descriptor creation.
 // e.g.:
 //   int socket(int domain, int type, int protocol) {
 //     return FDTRACK_CREATE_NAME("socket", __socket(domain, type, protocol));
 //   }
-#define FDTRACK_CREATE_NAME(name, fd_value)                       \
-  ({                                                              \
-    int __fd = (fd_value);                                        \
-    if (__fd != -1 && __predict_false(__android_fdtrack_hook) &&  \
-        !__predict_false(__get_thread()->is_vforked())) {         \
-      bionic_tls& tls = __get_bionic_tls();                       \
-      /* fdtrack_disabled is only true during reentrant calls. */ \
-      if (!__predict_false(tls.fdtrack_disabled)) {               \
-        ErrnoRestorer r;                                          \
-        tls.fdtrack_disabled = true;                              \
-        android_fdtrack_event event;                              \
-        event.fd = __fd;                                          \
-        event.type = ANDROID_FDTRACK_EVENT_TYPE_CREATE;           \
-        event.data.create.function_name = name;                   \
-        atomic_load(&__android_fdtrack_hook)(&event);             \
-        tls.fdtrack_disabled = false;                             \
-      }                                                           \
-    }                                                             \
-    __fd;                                                         \
+#define FDTRACK_CREATE_NAME(name, fd_value)                        \
+  ({                                                               \
+    int __fd = (fd_value);                                         \
+    if (__fd != -1 && __predict_false(__android_fdtrack_hook) &&   \
+        !__predict_false(__get_thread()->is_vforked())) {          \
+      bionic_tls& tls = __get_bionic_tls();                        \
+      /* fdtrack_disabled is only true during reentrant calls. */  \
+      if (!__predict_false(tls.fdtrack_disabled) &&                \
+          !__predict_false(__android_fdtrack_globally_disabled)) { \
+        ErrnoRestorer r;                                           \
+        tls.fdtrack_disabled = true;                               \
+        android_fdtrack_event event;                               \
+        event.fd = __fd;                                           \
+        event.type = ANDROID_FDTRACK_EVENT_TYPE_CREATE;            \
+        event.data.create.function_name = name;                    \
+        atomic_load (&__android_fdtrack_hook)(&event);             \
+        tls.fdtrack_disabled = false;                              \
+      }                                                            \
+    }                                                              \
+    __fd;                                                          \
   })
 
 // Macro to record file descriptor creation, with the current function's name.
@@ -74,22 +76,23 @@
 
 // Macro to record file descriptor closure.
 // Note that this does not actually close the file descriptor.
-#define FDTRACK_CLOSE(fd_value)                                  \
-  ({                                                             \
-    int __fd = (fd_value);                                       \
-    if (__fd != -1 && __predict_false(__android_fdtrack_hook) && \
-        !__predict_false(__get_thread()->is_vforked())) {        \
-      bionic_tls& tls = __get_bionic_tls();                      \
-      if (!__predict_false(tls.fdtrack_disabled)) {              \
-        int saved_errno = errno;                                 \
-        tls.fdtrack_disabled = true;                             \
-        android_fdtrack_event event;                             \
-        event.fd = __fd;                                         \
-        event.type = ANDROID_FDTRACK_EVENT_TYPE_CLOSE;           \
-        atomic_load(&__android_fdtrack_hook)(&event);            \
-        tls.fdtrack_disabled = false;                            \
-        errno = saved_errno;                                     \
-      }                                                          \
-    }                                                            \
-    __fd;                                                        \
+#define FDTRACK_CLOSE(fd_value)                                    \
+  ({                                                               \
+    int __fd = (fd_value);                                         \
+    if (__fd != -1 && __predict_false(__android_fdtrack_hook) &&   \
+        !__predict_false(__get_thread()->is_vforked())) {          \
+      bionic_tls& tls = __get_bionic_tls();                        \
+      if (!__predict_false(tls.fdtrack_disabled) &&                \
+          !__predict_false(__android_fdtrack_globally_disabled)) { \
+        int saved_errno = errno;                                   \
+        tls.fdtrack_disabled = true;                               \
+        android_fdtrack_event event;                               \
+        event.fd = __fd;                                           \
+        event.type = ANDROID_FDTRACK_EVENT_TYPE_CLOSE;             \
+        atomic_load (&__android_fdtrack_hook)(&event);             \
+        tls.fdtrack_disabled = false;                              \
+        errno = saved_errno;                                       \
+      }                                                            \
+    }                                                              \
+    __fd;                                                          \
   })