Merge changes I7d0b85b5,I74796043

* changes:
  logd: LogStatistics leak
  logd: kill(0,0) issue
diff --git a/logd/LogStatistics.cpp b/logd/LogStatistics.cpp
index baf15fe..6f3a088 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);
@@ -302,6 +307,10 @@
 }
 
 void LidStatistics::subtract(unsigned short size, uid_t uid, pid_t pid) {
+    if (uid == (uid_t) -1) { // init
+        uid = (uid_t) AID_ROOT;
+    }
+
     UidStatisticsCollection::iterator it;
     for (it = begin(); it != end(); ++it) {
         UidStatistics *u = *it;