logd: kill(0,0) issue

- Recognize pid=0 as special case (kernel or pre-init sourced)
  and refrain from treating it in the general case.

Bug: 17526159
Change-Id: I74796043ac34753c6dd10018719ebc0bcd94e012
diff --git a/logd/LogStatistics.cpp b/logd/LogStatistics.cpp
index baf15fe..1305b0a 100644
--- a/logd/LogStatistics.cpp
+++ b/logd/LogStatistics.cpp
@@ -54,6 +54,9 @@
     if (mGone || (pid == gone)) {
         return true;
     }
+    if (pid == 0) {
+        return false;
+    }
     if (kill(pid, 0) && (errno != EPERM)) {
         mGone = true;
         return true;
@@ -92,7 +95,9 @@
 //  which debuggerd prints as a process is crashing.
 char *PidStatistics::pidToName(pid_t pid) {
     char *retval = NULL;
-    if (pid != gone) {
+    if (pid == 0) { // special case from auditd for kernel
+        retval = strdup("logd.auditd");
+    } else if (pid != gone) {
         char buffer[512];
         snprintf(buffer, sizeof(buffer), "/proc/%u/cmdline", pid);
         int fd = open(buffer, O_RDONLY);