logd: klogd crash (part deux)
(cherry pick from commit 83b247891c)
LogBuffer::pidToUid(pid_t pid) { return stats.pidToUid(pid); }
needs to have LogBuffer::lock()/unlock() to prevent unordered_map
data corruption. This can lead to multiple symptoms, crashes and
continuous spins on corrupted iterators.
Bug: 30688716
Bug: 30050636
Bug: 30614675
Bug: 25620123
Bug: 30792935
Change-Id: I1d8fec8e5fda98c6a08645e7456b081507696b3c
This commit is contained in:
parent
c1167dd4c9
commit
f34d76ea65
1 changed files with 7 additions and 1 deletions
|
|
@ -26,6 +26,7 @@
|
|||
#include <syslog.h>
|
||||
|
||||
#include <log/logger.h>
|
||||
#include <private/android_filesystem_config.h>
|
||||
|
||||
#include "LogBuffer.h"
|
||||
#include "LogKlog.h"
|
||||
|
|
@ -614,7 +615,12 @@ int LogKlog::log(const char *buf, size_t len) {
|
|||
// Parse pid, tid and uid
|
||||
const pid_t pid = sniffPid(&p, len - (p - buf));
|
||||
const pid_t tid = pid;
|
||||
const uid_t uid = pid ? logbuf->pidToUid(pid) : 0;
|
||||
uid_t uid = AID_ROOT;
|
||||
if (pid) {
|
||||
logbuf->lock();
|
||||
uid = logbuf->pidToUid(pid);
|
||||
logbuf->unlock();
|
||||
}
|
||||
|
||||
// Parse (rules at top) to pull out a tag from the incoming kernel message.
|
||||
// Some may view the following as an ugly heuristic, the desire is to
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue