diff options
author | Yabin Cui <yabinc@google.com> | 2020-03-04 21:16:39 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-03-04 21:16:39 +0000 |
commit | 2db68f864cd622d057e9a2c143facc6b84ec1817 (patch) | |
tree | 92c5a6a4b4b231fb0e5e8e65001d977d539e8494 | |
parent | 8e0f8b4cce17e01331863c461c1c4a34d15928f2 (diff) | |
parent | a7ada3afc51736f752c0d251e506928ff4d418f7 (diff) | |
download | extras-2db68f864cd622d057e9a2c143facc6b84ec1817.tar.gz |
Merge "simpleperf: use perf_lsm_hooks prop for permission check." into rvc-dev
-rw-r--r-- | simpleperf/environment.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/simpleperf/environment.cpp b/simpleperf/environment.cpp index af14fa3f..e16e496f 100644 --- a/simpleperf/environment.cpp +++ b/simpleperf/environment.cpp @@ -296,12 +296,21 @@ static bool ReadPerfEventParanoid(int* value) { } bool CanRecordRawData() { - if (GetAndroidVersion() >= 11) { - // On Android R, tracepoint raw data is disabled by selinux. - return IsRoot(); + if (IsRoot()) { + return true; } int value; - return ReadPerfEventParanoid(&value) && value == -1; + if (!ReadPerfEventParanoid(&value) || value > -1) { + return false; + } +#if defined(__ANDROID__) + // If perf_event_open() is controlled by selinux, simpleperf can't record tracepoint raw data + // unless running as root. + if (android::base::GetProperty("sys.init.perf_lsm_hooks", "") == "1") { + return false; + } +#endif + return true; } static const char* GetLimitLevelDescription(int limit_level) { |