summaryrefslogtreecommitdiffstats
path: root/logd/LogBuffer.h
diff options
context:
space:
mode:
authorMark Salyzyn <salyzyn@google.com>2015-06-24 16:22:54 -0700
committerMark Salyzyn <salyzyn@google.com>2015-06-25 07:39:24 -0700
commited777e9eece54bf899f1a77a83f8b702970de686 (patch)
tree6aa05949e56271aa26abc03a16d63f37f04d4d9e /logd/LogBuffer.h
parent1a3334f22965f531449d890c1a97811fa249a754 (diff)
downloadsystem_core-ed777e9eece54bf899f1a77a83f8b702970de686.tar.gz
system_core-ed777e9eece54bf899f1a77a83f8b702970de686.tar.bz2
system_core-ed777e9eece54bf899f1a77a83f8b702970de686.zip
logd: serialize accesses to stats helpers
Quick low-risk to resolve possible hash table corruption. Resolved an unlikely path memory leak. ToDo: replace lock with nested lock so no lock helpers are required. Bug: 22068332 Change-Id: I303ab06608502c7d61d42f111a9c43366f184d0c
Diffstat (limited to 'logd/LogBuffer.h')
-rw-r--r--logd/LogBuffer.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/logd/LogBuffer.h b/logd/LogBuffer.h
index 00b19b67b..a13fded8b 100644
--- a/logd/LogBuffer.h
+++ b/logd/LogBuffer.h
@@ -71,10 +71,12 @@ public:
// *strp uses malloc, use free to release.
void formatPrune(char **strp) { mPrune.format(strp); }
- // helper
+ // helper must be protected directly or implicitly by lock()/unlock()
char *pidToName(pid_t pid) { return stats.pidToName(pid); }
uid_t pidToUid(pid_t pid) { return stats.pidToUid(pid); }
char *uidToName(uid_t uid) { return stats.uidToName(uid); }
+ void lock() { pthread_mutex_lock(&mLogElementsLock); }
+ void unlock() { pthread_mutex_unlock(&mLogElementsLock); }
private:
void maybePrune(log_id_t id);