Merge "[CrashReporting] Correct guest arch init" into main
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
index 9b96f36..f47c317 100644
--- a/PREUPLOAD.cfg
+++ b/PREUPLOAD.cfg
@@ -1,6 +1,7 @@
[Builtin Hooks]
clang_format = true
rustfmt = true
+bpfmt = true
[Builtin Hooks Options]
clang_format = --commit ${PREUPLOAD_COMMIT} --style file --extensions c,h,cc,cpp
diff --git a/debuggerd/proto/tombstone.proto b/debuggerd/proto/tombstone.proto
index 6f9cd96..b662d36 100644
--- a/debuggerd/proto/tombstone.proto
+++ b/debuggerd/proto/tombstone.proto
@@ -18,6 +18,8 @@
message CrashDetail {
bytes name = 1;
bytes data = 2;
+
+ reserved 3 to 999;
}
message Tombstone {
diff --git a/fastboot/Android.bp b/fastboot/Android.bp
index c0445f3..774af28 100644
--- a/fastboot/Android.bp
+++ b/fastboot/Android.bp
@@ -190,7 +190,6 @@
static_libs: [
"android.hardware.health-translate-ndk",
- "libc++fs",
"libhealthhalutils",
"libhealthshim",
"libfastbootshim",
@@ -416,7 +415,6 @@
srcs: ["vendor_boot_img_utils_test.cpp"],
static_libs: [
"libbase",
- "libc++fs",
"libfastboot",
"libgmock",
"liblog",
diff --git a/fs_mgr/libsnapshot/Android.bp b/fs_mgr/libsnapshot/Android.bp
index 402eb82..39b5b76 100644
--- a/fs_mgr/libsnapshot/Android.bp
+++ b/fs_mgr/libsnapshot/Android.bp
@@ -126,7 +126,6 @@
"libprotobuf-cpp-lite",
],
static_libs: [
- "libc++fs",
"libsnapshot_cow",
],
}
@@ -269,7 +268,6 @@
"android.hardware.boot@1.1",
"android.hardware.boot-V1-ndk",
"libbrotli",
- "libc++fs",
"libfs_mgr_binder",
"libgflags",
"libgsi",
@@ -350,7 +348,6 @@
],
static_libs: [
"libbrotli",
- "libc++fs",
"libfstab",
"libz",
"update_metadata-protos",
diff --git a/fs_mgr/tests/Android.bp b/fs_mgr/tests/Android.bp
index 2aeba0a..041762f 100644
--- a/fs_mgr/tests/Android.bp
+++ b/fs_mgr/tests/Android.bp
@@ -14,6 +14,7 @@
package {
default_applicable_licenses: ["Android-Apache-2.0"],
+ default_team: "trendy_team_android_kernel",
}
cc_test {
diff --git a/init/Android.bp b/init/Android.bp
index dd1f9aa..57e5a68 100644
--- a/init/Android.bp
+++ b/init/Android.bp
@@ -168,7 +168,6 @@
"libavb",
"libavf_cc_flags",
"libbootloader_message",
- "libc++fs",
"libcgrouprc_format",
"liblmkd_utils",
"liblz4",
@@ -371,7 +370,6 @@
],
static_libs: [
- "libc++fs",
"libfs_avb",
"libavf_cc_flags",
"libfs_mgr",
@@ -571,6 +569,11 @@
],
export_include_dirs: ["test_utils/include"], // for tests
header_libs: ["bionic_libc_platform_headers"],
+ product_variables: {
+ shipping_api_level: {
+ cflags: ["-DBUILD_SHIPPING_API_LEVEL=%s"],
+ },
+ },
}
// Host Verifier
@@ -625,6 +628,11 @@
enabled: false,
},
},
+ product_variables: {
+ shipping_api_level: {
+ cflags: ["-DBUILD_SHIPPING_API_LEVEL=%s"],
+ },
+ },
}
cc_binary {
diff --git a/init/fuzzer/Android.bp b/init/fuzzer/Android.bp
index 9916246..5823932 100644
--- a/init/fuzzer/Android.bp
+++ b/init/fuzzer/Android.bp
@@ -20,7 +20,6 @@
cc_defaults {
name: "libinit_fuzzer_defaults",
static_libs: [
- "libc++fs",
"liblmkd_utils",
"libmodprobe",
"libprotobuf-cpp-lite",
diff --git a/init/host_init_stubs.h b/init/host_init_stubs.h
index 753ed6b..2fef9d3 100644
--- a/init/host_init_stubs.h
+++ b/init/host_init_stubs.h
@@ -32,6 +32,7 @@
#define __ANDROID_API_S__ 31
#define __ANDROID_API_T__ 33
#define __ANDROID_API_U__ 34
+#define __ANDROID_API_V__ 35
// sys/system_properties.h
#define PROP_VALUE_MAX 92
diff --git a/init/service_parser.cpp b/init/service_parser.cpp
index de902e6..6781c70 100644
--- a/init/service_parser.cpp
+++ b/init/service_parser.cpp
@@ -52,6 +52,18 @@
namespace android {
namespace init {
+#ifdef INIT_FULL_SOURCES
+// on full sources, we have better information on device to
+// make this decision
+constexpr bool kAlwaysErrorUserRoot = false;
+#else
+constexpr uint64_t kBuildShippingApiLevel = BUILD_SHIPPING_API_LEVEL + 0 /* +0 if empty */;
+// on partial sources, the host build, we don't have the specific
+// vendor API level, but we can enforce things based on the
+// shipping API level.
+constexpr bool kAlwaysErrorUserRoot = kBuildShippingApiLevel > __ANDROID_API_V__;
+#endif
+
Result<void> ServiceParser::ParseCapabilities(std::vector<std::string>&& args) {
service_->capabilities_ = 0;
@@ -680,7 +692,8 @@
}
if (service_->proc_attr_.parsed_uid == std::nullopt) {
- if (android::base::GetIntProperty("ro.vendor.api_level", 0) > 202404) {
+ if (kAlwaysErrorUserRoot ||
+ android::base::GetIntProperty("ro.vendor.api_level", 0) > 202404) {
return Error() << "No user specified for service '" << service_->name()
<< "', so it would have been root.";
} else {
diff --git a/rootdir/Android.bp b/rootdir/Android.bp
index bd24f22..e8f7627 100644
--- a/rootdir/Android.bp
+++ b/rootdir/Android.bp
@@ -62,7 +62,7 @@
name: "public.libraries.android.txt",
src: "etc/public.libraries.android.txt",
filename: "public.libraries.txt",
- installable: false,
+ no_full_install: true,
}
// adb_debug.prop in debug ramdisk
diff --git a/rootdir/Android.mk b/rootdir/Android.mk
index 06e8730..4c1f2e4 100644
--- a/rootdir/Android.mk
+++ b/rootdir/Android.mk
@@ -72,9 +72,9 @@
EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS :=
ifeq ($(CLANG_COVERAGE),true)
ifeq ($(CLANG_COVERAGE_CONTINUOUS_MODE),true)
- EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS := export LLVM_PROFILE_FILE /data/local/tmp/clang%c-%20m.profraw
+ EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS := export LLVM_PROFILE_FILE /data/misc/trace/clang%c-%20m.profraw
else
- EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS := export LLVM_PROFILE_FILE /data/local/tmp/clang-%20m.profraw
+ EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS := export LLVM_PROFILE_FILE /data/misc/trace/clang-%20m.profraw
endif
endif
diff --git a/rootdir/init.zygote32.rc b/rootdir/init.zygote32.rc
index 442bd15..862afb6 100644
--- a/rootdir/init.zygote32.rc
+++ b/rootdir/init.zygote32.rc
@@ -16,5 +16,5 @@
onrestart restart --only-if-running media.tuner
onrestart restart netd
onrestart restart wificond
- task_profiles ProcessCapacityHigh
+ task_profiles ProcessCapacityHigh MaxPerformance
critical window=${zygote.critical_window.minute:-off} target=zygote-fatal
diff --git a/toolbox/modprobe.cpp b/toolbox/modprobe.cpp
index b0e76ea..7fde491 100644
--- a/toolbox/modprobe.cpp
+++ b/toolbox/modprobe.cpp
@@ -15,9 +15,9 @@
*/
#include <ctype.h>
-#include <fcntl.h>
#include <getopt.h>
#include <stdlib.h>
+#include <unistd.h>
#include <string>
@@ -28,7 +28,6 @@
#include <modprobe/modprobe.h>
#include <sys/utsname.h>
-#include <unistd.h>
namespace {
@@ -87,6 +86,20 @@
}
}
+static bool ModDirMatchesKernelPageSize(const char* mod_dir) {
+ static const unsigned int kernel_pgsize_kb = getpagesize() / 1024;
+ const char* mod_sfx = strrchr(mod_dir, '_');
+ unsigned int mod_pgsize_kb;
+ int mod_sfx_len;
+
+ if (mod_sfx == NULL || sscanf(mod_sfx, "_%uk%n", &mod_pgsize_kb, &mod_sfx_len) != 1 ||
+ strlen(mod_sfx) != mod_sfx_len) {
+ mod_pgsize_kb = 4;
+ }
+
+ return kernel_pgsize_kb == mod_pgsize_kb;
+}
+
// Find directories in format of "/lib/modules/x.y.z-*".
static int KernelVersionNameFilter(const dirent* de) {
unsigned int major, minor;
@@ -102,16 +115,11 @@
}
if (android::base::StartsWith(de->d_name, kernel_version)) {
- return 1;
+ return ModDirMatchesKernelPageSize(de->d_name);
}
return 0;
}
-std::string GetPageSizeSuffix() {
- static const size_t page_size = sysconf(_SC_PAGE_SIZE);
- return android::base::StringPrintf("_%zuk", page_size / 1024);
-}
-
} // anonymous namespace
extern "C" int modprobe_main(int argc, char** argv) {
@@ -240,19 +248,6 @@
// Allow modules to be directly inside /lib/modules
mod_dirs.emplace_back(LIB_MODULES_PREFIX);
}
- if (getpagesize() != 4096) {
- struct utsname uts {};
- if (uname(&uts)) {
- PLOG(FATAL) << "Failed to get kernel version";
- }
- const auto module_dir = android::base::StringPrintf("/lib/modules/%s%s", uts.release,
- GetPageSizeSuffix().c_str());
- struct stat st {};
- if (stat(module_dir.c_str(), &st) == 0 && S_ISDIR(st.st_mode)) {
- mod_dirs.clear();
- mod_dirs.emplace_back(module_dir);
- }
- }
LOG(DEBUG) << "mode is " << mode;
LOG(DEBUG) << "mod_dirs is: " << android::base::Join(mod_dirs, " ");