Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 17b29967 authored by Tom Cherry's avatar Tom Cherry Committed by android-build-merger
Browse files

Merge "Log pid for writes to sys.powerctl" am: 2827106d

am: c1968fb0

Change-Id: I3912b76dfca15e9d49d6c657c5081745b163af1b
parents b162af0a c1968fb0
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@
#include <android-base/file.h>
#include <android-base/logging.h>
#include <android-base/properties.h>
#include <android-base/stringprintf.h>
#include <android-base/strings.h>
#include <bootimg.h>
#include <fs_mgr.h>
@@ -56,6 +57,7 @@
#include "persistent_properties.h"
#include "util.h"

using android::base::StringPrintf;
using android::base::Timer;

#define RECOVERY_MOUNT_POINT "/recovery"
@@ -418,6 +420,20 @@ static void handle_property_set(SocketConnection& socket,
    }
  } else {
    if (check_mac_perms(name, source_ctx, &cr)) {
      // sys.powerctl is a special property that is used to make the device reboot.  We want to log
      // any process that sets this property to be able to accurately blame the cause of a shutdown.
      if (name == "sys.powerctl") {
        std::string cmdline_path = StringPrintf("proc/%d/cmdline", cr.pid);
        std::string process_cmdline;
        std::string process_log_string;
        if (android::base::ReadFileToString(cmdline_path, &process_cmdline)) {
          // Since cmdline is null deliminated, .c_str() conveniently gives us just the process path.
          process_log_string = StringPrintf(" (%s)", process_cmdline.c_str());
        }
        LOG(INFO) << "Received sys.powerctl='" << value << "' from pid: " << cr.pid
                  << process_log_string;
      }

      uint32_t result = property_set(name, value);
      if (!legacy_protocol) {
        socket.SendUint32(result);