summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-03-04 21:53:21 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-03-04 21:53:21 +0000
commit330304c8862330e9ca9852b3489c0c06a8b4bb4c (patch)
tree92c5a6a4b4b231fb0e5e8e65001d977d539e8494
parent305e9dc8d1f2df7ff3788c86f038c8178f4e2427 (diff)
parent4ea3d075336f232e0b8653f31e89eaf470ecd00f (diff)
downloadextras-330304c8862330e9ca9852b3489c0c06a8b4bb4c.tar.gz
Merge "simpleperf: use perf_lsm_hooks prop for permission check." into rvc-dev am: 2db68f864c am: 4ea3d07533
Change-Id: I582f55abbb5640fc3ac00709d53334678b10833b
-rw-r--r--simpleperf/environment.cpp17
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) {