diff options
author | Ecco Park <eccopark@google.com> | 2017-01-31 18:02:52 -0800 |
---|---|---|
committer | Ecco Park <eccopark@google.com> | 2017-02-01 17:03:10 -0800 |
commit | 3399e5d7bbc6036c8e19eb82dd967596eac71f01 (patch) | |
tree | f09092b70f32e2af8bcc6eac5d7371aa006c693e /dumpstate/DumpstateDevice.cpp | |
parent | 426faea4e7d55be4c49335a3d8de58871c867172 (diff) | |
download | marlin-3399e5d7bbc6036c8e19eb82dd967596eac71f01.tar.gz |
Dumpstate: Fix selinux permission error for hal_dumpstate_impl
Dumpstate for marlin has been broken since hidlization because of
selinux permission
For modem log, create the property(ro.radio.log_loc) so that dumpstate
refer this prop to read the modem logs.
Test: 1) generated dumpstate-board.txt without any permission error
2) modem sim is detected properly
Bug: 31982882
Fixes: 34076823
Fixes: 34831632
Change-Id: Id2f2700ea0e138274726f9ec142747fb02fa28a8
Signed-off-by: Ecco Park <eccopark@google.com>
Diffstat (limited to 'dumpstate/DumpstateDevice.cpp')
-rwxr-xr-x | dumpstate/DumpstateDevice.cpp | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/dumpstate/DumpstateDevice.cpp b/dumpstate/DumpstateDevice.cpp index b3323a7d..18be72cd 100755 --- a/dumpstate/DumpstateDevice.cpp +++ b/dumpstate/DumpstateDevice.cpp @@ -28,6 +28,7 @@ #include "DumpstateUtil.h" #define MODEM_LOG_PREFIX_PROPERTY "ro.radio.log_prefix" +#define MODEM_LOG_LOC_PROPERTY "ro.radio.log_loc" #define MODEM_LOGGING_SWITCH "persist.radio.smlog_switch" using android::os::dumpstate::CommandOptions; @@ -46,33 +47,30 @@ namespace { static void getModemLogs(int fd) { bool modemLogsEnabled = 0; - + std::string modemLogDir = android::base::GetProperty(MODEM_LOG_LOC_PROPERTY, ""); + if (modemLogDir.empty()) { + ALOGD("No modem log place is set\n"); + return; + } /* Check if smlog_dump tool exist */ - if (!PropertiesHelper::IsUserBuild() && !access("/system/bin/smlog_dump", F_OK)) { + if (!PropertiesHelper::IsUserBuild() && !access("/system/bin/smlog_dump", X_OK)) { modemLogsEnabled = android::base::GetBoolProperty(MODEM_LOGGING_SWITCH, false); /* Execute SMLOG DUMP if SMLOG is enabled */ if (modemLogsEnabled) { - // TODO: uses a temporary path instead - std::string bugreportDir = "/bugreports"; - CommandOptions options = CommandOptions::WithTimeout(120).AsRoot().Build(); - RunCommandToFd(fd, "SMLOG DUMP", { "smlog_dump", "-d", "-o", bugreportDir.c_str() }, options); - + CommandOptions options = CommandOptions::WithTimeout(120).Build(); + RunCommandToFd(fd, "SMLOG DUMP", { "smlog_dump", "-d", "-o", modemLogDir.c_str() }, options); // Remove smlog folders older than 10 days. std::string filePrefix = android::base::GetProperty(MODEM_LOG_PREFIX_PROPERTY, ""); if (!filePrefix.empty()) { std::string removeCommand = "/system/bin/find " + - bugreportDir + "/" + filePrefix + "* -mtime +10 -delete"; + modemLogDir + "/" + filePrefix + "* -mtime +10 -delete"; RunCommandToFd(fd, "RM OLD SMLOG", - { "/system/bin/sh", "-c", removeCommand.c_str()}, - CommandOptions::AS_ROOT); + { "/system/bin/sh", "-c", removeCommand.c_str() }); } } - RunCommandToFd(fd, "RM OLD SMLOG", - { "/system/bin/sh", "-c", "/system/bin/find /data/smlog_* -delete" }, - CommandOptions::AS_ROOT); } } @@ -98,18 +96,17 @@ Return<void> DumpstateDevice::dumpstateBoard(const hidl_handle& handle) { DumpFileToFd(fd, "RPM Stats", "/d/rpm_stats"); DumpFileToFd(fd, "Power Management Stats", "/d/rpm_master_stats"); DumpFileToFd(fd, "SMD Log", "/d/ipc_logging/smd/log"); - RunCommandToFd(fd, "ION HEAPS", {"/system/bin/sh", "-c", "for d in $(ls -d /d/ion/*); do for f in $(ls $d); do echo --- $d/$f; cat $d/$f; done; done"}, CommandOptions::AS_ROOT); + RunCommandToFd(fd, "ION HEAPS", {"/system/bin/sh", "-c", "for d in $(ls -d /d/ion/*); do for f in $(ls $d); do echo --- $d/$f; cat $d/$f; done; done"}); DumpFileToFd(fd, "dmabuf info", "/d/dma_buf/bufinfo"); - RunCommandToFd(fd, "Temperatures", {"/system/bin/sh", "-c", "for f in `ls /sys/class/thermal` ; do type=`cat /sys/class/thermal/$f/type` ; temp=`cat /sys/class/thermal/$f/temp` ; echo \"$type: $temp\" ; done"}, CommandOptions::AS_ROOT); + RunCommandToFd(fd, "Temperatures", {"/system/bin/sh", "-c", "for f in `ls /sys/class/thermal` ; do type=`cat /sys/class/thermal/$f/type` ; temp=`cat /sys/class/thermal/$f/temp` ; echo \"$type: $temp\" ; done"}); DumpFileToFd(fd, "cpu0-1 time-in-state", "/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state"); - RunCommandToFd(fd, "cpu0-1 cpuidle", {"/system/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu0/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done"}, CommandOptions::AS_ROOT); + RunCommandToFd(fd, "cpu0-1 cpuidle", {"/system/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu0/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done"}); DumpFileToFd(fd, "cpu2-3 time-in-state", "/sys/devices/system/cpu/cpu2/cpufreq/stats/time_in_state"); - RunCommandToFd(fd, "cpu2-3 cpuidle", {"/system/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu2/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done"}, CommandOptions::AS_ROOT); + RunCommandToFd(fd, "cpu2-3 cpuidle", {"/system/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu2/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done"}); DumpFileToFd(fd, "MDP xlogs", "/d/mdp/xlog/dump"); - RunCommandToFd(fd, "RAMDUMP LIST", {"/system/bin/sh", "-c", "cat /data/data/com.android.ramdump/files/RAMDUMP_LIST"}, CommandOptions::AS_ROOT); /* Check if qsee_logger tool exists */ - if (!access("/system/bin/qsee_logger", F_OK)) { + if (!access("/system/bin/qsee_logger", X_OK)) { RunCommandToFd(fd, "FP LOGS", {"qsee_logger", "-d"}); } |