diff options
author | Mark Salyzyn <salyzyn@google.com> | 2015-06-24 16:22:54 -0700 |
---|---|---|
committer | Mark Salyzyn <salyzyn@google.com> | 2015-06-25 07:39:24 -0700 |
commit | ed777e9eece54bf899f1a77a83f8b702970de686 (patch) | |
tree | 6aa05949e56271aa26abc03a16d63f37f04d4d9e /logd/LogBuffer.h | |
parent | 1a3334f22965f531449d890c1a97811fa249a754 (diff) | |
download | system_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.h | 4 |
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); |