Snap for 5437783 from 5c58e092f3df0e70235a4cdd41790a505e1ee596 to simpleperf-release Change-Id: I06e3596a55d13b78ca8cdb553845e31997448caa
diff --git a/adb/types.h b/adb/types.h index 0090c98..cd1366d 100644 --- a/adb/types.h +++ b/adb/types.h
@@ -216,7 +216,10 @@ // Add a nonempty block to the chain. // The end of the chain must be a complete block (i.e. end_offset_ == 0). void append(std::unique_ptr<const block_type> block) { - CHECK_NE(0ULL, block->size()); + if (block->size() == 0) { + return; + } + CHECK_EQ(0ULL, end_offset_); chain_length_ += block->size(); chain_.emplace_back(std::move(block));
diff --git a/init/property_service.cpp b/init/property_service.cpp index fc5538c..467568c 100644 --- a/init/property_service.cpp +++ b/init/property_service.cpp
@@ -557,9 +557,8 @@ uint32_t result = HandlePropertySet(prop_name, prop_value, socket.source_context(), cr, &error); if (result != PROP_SUCCESS) { - LOG(ERROR) << "Unable to set property '" << prop_name << "' to '" << prop_value - << "' from uid:" << cr.uid << " gid:" << cr.gid << " pid:" << cr.pid << ": " - << error; + LOG(ERROR) << "Unable to set property '" << prop_name << "' from uid:" << cr.uid + << " gid:" << cr.gid << " pid:" << cr.pid << ": " << error; } break; @@ -579,9 +578,8 @@ std::string error; uint32_t result = HandlePropertySet(name, value, socket.source_context(), cr, &error); if (result != PROP_SUCCESS) { - LOG(ERROR) << "Unable to set property '" << name << "' to '" << value - << "' from uid:" << cr.uid << " gid:" << cr.gid << " pid:" << cr.pid << ": " - << error; + LOG(ERROR) << "Unable to set property '" << name << "' from uid:" << cr.uid + << " gid:" << cr.gid << " pid:" << cr.pid << ": " << error; } socket.SendUint32(result); break;
diff --git a/libprocessgroup/setup/cgroup_map_write.cpp b/libprocessgroup/setup/cgroup_map_write.cpp index 26703ee..da60948 100644 --- a/libprocessgroup/setup/cgroup_map_write.cpp +++ b/libprocessgroup/setup/cgroup_map_write.cpp
@@ -235,14 +235,9 @@ #endif -// WARNING: This function should be called only from SetupCgroups and only once. -// It intentionally leaks an FD, so additional invocation will result in additional leak. static bool WriteRcFile(const std::map<std::string, CgroupDescriptor>& descriptors) { - // WARNING: We are intentionally leaking the FD to keep the file open forever. - // Let init keep the FD open to prevent file mappings from becoming invalid in - // case the file gets deleted somehow. - int fd = TEMP_FAILURE_RETRY(open(CGROUPS_RC_PATH, O_CREAT | O_WRONLY | O_TRUNC | O_CLOEXEC, - S_IRUSR | S_IRGRP | S_IROTH)); + unique_fd fd(TEMP_FAILURE_RETRY(open(CGROUPS_RC_PATH, O_CREAT | O_WRONLY | O_TRUNC | O_CLOEXEC, + S_IRUSR | S_IRGRP | S_IROTH))); if (fd < 0) { PLOG(ERROR) << "open() failed for " << CGROUPS_RC_PATH; return false;
diff --git a/toolbox/Android.bp b/toolbox/Android.bp index 1f852ff..5289976 100644 --- a/toolbox/Android.bp +++ b/toolbox/Android.bp
@@ -56,14 +56,6 @@ defaults: ["toolbox_binary_defaults"], } -// We only want 'r' on userdebug and eng builds. -cc_binary { - name: "r", - defaults: ["toolbox_defaults"], - srcs: ["r.c"], - vendor_available: true, -} - // We build BSD grep separately (but see http://b/111849261). cc_defaults { name: "grep_common",
diff --git a/toolbox/r.c b/toolbox/r.c deleted file mode 100644 index b96cdb2..0000000 --- a/toolbox/r.c +++ /dev/null
@@ -1,102 +0,0 @@ -#include <fcntl.h> -#include <inttypes.h> -#include <stdbool.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/mman.h> -#include <unistd.h> - -#if __LP64__ -#define strtoptr strtoull -#else -#define strtoptr strtoul -#endif - -static int usage() -{ - fprintf(stderr,"r [-b|-s] <address> [<value>]\n"); - return -1; -} - -int main(int argc, char *argv[]) -{ - if(argc < 2) return usage(); - - int width = 4; - if(!strcmp(argv[1], "-b")) { - width = 1; - argc--; - argv++; - } else if(!strcmp(argv[1], "-s")) { - width = 2; - argc--; - argv++; - } - - if(argc < 2) return usage(); - uintptr_t addr = strtoptr(argv[1], 0, 16); - - uintptr_t endaddr = 0; - char* end = strchr(argv[1], '-'); - if (end) - endaddr = strtoptr(end + 1, 0, 16); - - if (!endaddr) - endaddr = addr + width - 1; - - if (endaddr <= addr) { - fprintf(stderr, "end address <= start address\n"); - return -1; - } - - bool set = false; - uint32_t value = 0; - if(argc > 2) { - set = true; - value = strtoul(argv[2], 0, 16); - } - - int fd = open("/dev/mem", O_RDWR | O_SYNC); - if(fd < 0) { - fprintf(stderr,"cannot open /dev/mem\n"); - return -1; - } - - off64_t mmap_start = addr & ~(PAGE_SIZE - 1); - size_t mmap_size = endaddr - mmap_start + 1; - mmap_size = (mmap_size + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1); - - void* page = mmap64(0, mmap_size, PROT_READ | PROT_WRITE, - MAP_SHARED, fd, mmap_start); - - if(page == MAP_FAILED){ - fprintf(stderr,"cannot mmap region\n"); - return -1; - } - - while (addr <= endaddr) { - switch(width){ - case 4: { - uint32_t* x = (uint32_t*) (((uintptr_t) page) + (addr & 4095)); - if(set) *x = value; - fprintf(stderr,"%08"PRIxPTR": %08x\n", addr, *x); - break; - } - case 2: { - uint16_t* x = (uint16_t*) (((uintptr_t) page) + (addr & 4095)); - if(set) *x = value; - fprintf(stderr,"%08"PRIxPTR": %04x\n", addr, *x); - break; - } - case 1: { - uint8_t* x = (uint8_t*) (((uintptr_t) page) + (addr & 4095)); - if(set) *x = value; - fprintf(stderr,"%08"PRIxPTR": %02x\n", addr, *x); - break; - } - } - addr += width; - } - return 0; -}