logd: klogd crash (part deux)
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
07f14c9cdd
commit
83b247891c
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"
|
||||
|
@ -589,7 +590,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…
Reference in a new issue