diff --git a/ext4_utils/ext4_crypt_init_extensions.cpp b/ext4_utils/ext4_crypt_init_extensions.cpp
index 3fb04b9..7ae076a 100644
--- a/ext4_utils/ext4_crypt_init_extensions.cpp
+++ b/ext4_utils/ext4_crypt_init_extensions.cpp
@@ -60,19 +60,18 @@
 
     struct pollfd poll_sock = {sock, POLLIN, 0};
 
-    int rc = TEMP_FAILURE_RETRY(poll(&poll_sock, 1, vold_command_timeout_ms));
+    int rc = poll(&poll_sock, 1, vold_command_timeout_ms);
     if (rc < 0) {
         KLOG_ERROR(TAG, "Error in poll %s\n", strerror(errno));
         return "";
     }
-
     if (!(poll_sock.revents & POLLIN)) {
         KLOG_ERROR(TAG, "Timeout\n");
         return "";
     }
     char buffer[4096];
     memset(buffer, 0, sizeof(buffer));
-    rc = TEMP_FAILURE_RETRY(read(sock, buffer, sizeof(buffer)));
+    rc = read(sock, buffer, sizeof(buffer));
     if (rc <= 0) {
         if (rc == 0) {
             KLOG_ERROR(TAG, "Lost connection to Vold - did it crash?\n");
diff --git a/perfprofd/perf_profile.proto b/perfprofd/perf_profile.proto
index 3932a16..ee34163 100644
--- a/perfprofd/perf_profile.proto
+++ b/perfprofd/perf_profile.proto
@@ -91,12 +91,4 @@
 
   // List of all load modules.
   repeated LoadModule load_modules = 4;
-
-  // is device screen on at point when profile is collected?
-  optional bool display_on = 5;
-
-  // system load at point when profile is collected; corresponds
-  // to first value from /proc/loadavg multiplied by 100 then
-  // converted to int32
-  optional int32 sys_load_average = 6;
-}
+}
\ No newline at end of file
diff --git a/perfprofd/perfprofdcore.cc b/perfprofd/perfprofdcore.cc
index 8f5b013..1cf08ad 100644
--- a/perfprofd/perfprofdcore.cc
+++ b/perfprofd/perfprofdcore.cc
@@ -34,7 +34,6 @@
 #include <set>
 #include <cctype>
 
-#include <base/file.h>
 #include <base/stringprintf.h>
 #include <cutils/properties.h>
 
@@ -482,35 +481,6 @@
   return DO_COLLECT_PROFILE;
 }
 
-static void annotate_encoded_perf_profile(wireless_android_play_playlog::AndroidPerfProfile *profile)
-{
-  //
-  // Load average as reported by the kernel
-  //
-  std::string load;
-  double fload = 0.0;
-  if (android::base::ReadFileToString("/proc/loadavg", &load) &&
-      sscanf(load.c_str(), "%lf", &fload) == 1) {
-    int iload = static_cast<int>(fload * 100.0);
-    profile->set_sys_load_average(iload);
-  } else {
-    W_ALOGE("Failed to read or scan /proc/loadavg (%s)", strerror(errno));
-  }
-
-  //
-  // Examine the contents of wake_unlock to determine whether the
-  // device display is on or off. NB: is this really the only way to
-  // determine this info?
-  //
-  std::string disp;
-  if (android::base::ReadFileToString("/sys/power/wake_unlock", &disp)) {
-    bool ison = (strstr(disp.c_str(), "PowerManagerService.Display") == 0);
-    profile->set_display_on(ison);
-  } else {
-    W_ALOGE("Failed to read /sys/power/wake_unlock (%s)", strerror(errno));
-  }
-}
-
 inline char* string_as_array(std::string* str) {
   return str->empty() ? NULL : &*str->begin();
 }
@@ -531,13 +501,6 @@
     return ERR_PERF_ENCODE_FAILED;
   }
 
-  // All of the info in 'encodedProfile' is derived from the perf.data file;
-  // here we tack display status and system load.
-  wireless_android_play_playlog::AndroidPerfProfile &prof =
-      const_cast<wireless_android_play_playlog::AndroidPerfProfile&>
-      (encodedProfile);
-  annotate_encoded_perf_profile(&prof);
-
   //
   // Serialize protobuf to array
   //
