diff options
-rw-r--r-- | cmds/atrace/atrace.rc | 21 | ||||
-rw-r--r-- | libs/binder/Android.bp | 12 | ||||
-rw-r--r-- | libs/binder/OWNERS | 2 | ||||
-rw-r--r-- | libs/binder/rust/rpcbinder/Android.bp | 2 | ||||
-rw-r--r-- | libs/binder/tests/Android.bp | 11 | ||||
-rw-r--r-- | libs/binderdebug/include/binderdebug/BinderDebug.h | 2 | ||||
-rw-r--r-- | opengl/libs/EGL/BlobCache.cpp | 6 | ||||
-rw-r--r-- | opengl/libs/EGL/BlobCache.h | 5 | ||||
-rw-r--r-- | opengl/libs/EGL/BlobCache_test.cpp | 27 | ||||
-rw-r--r-- | services/batteryservice/include/batteryservice/BatteryService.h | 1 |
10 files changed, 63 insertions, 26 deletions
diff --git a/cmds/atrace/atrace.rc b/cmds/atrace/atrace.rc index 5267b0294c..ea5d602625 100644 --- a/cmds/atrace/atrace.rc +++ b/cmds/atrace/atrace.rc @@ -181,6 +181,8 @@ on late-init chmod 0666 /sys/kernel/tracing/events/clk/clk_enable/enable chmod 0666 /sys/kernel/debug/tracing/events/clk/clk_set_rate/enable chmod 0666 /sys/kernel/tracing/events/clk/clk_set_rate/enable + chmod 0666 /sys/kernel/debug/tracing/events/printk/console/enable + chmod 0666 /sys/kernel/tracing/events/printk/console/enable # disk chmod 0666 /sys/kernel/tracing/events/f2fs/f2fs_get_data_block/enable @@ -295,8 +297,18 @@ on late-init write /sys/kernel/debug/tracing/synthetic_events "rss_stat_throttled unsigned int mm_id; unsigned int curr; int member; long size" # allow creating event triggers - chmod 0666 /sys/kernel/debug/tracing/events/kmem/rss_stat/trigger chmod 0666 /sys/kernel/tracing/events/kmem/rss_stat/trigger + chmod 0666 /sys/kernel/debug/tracing/events/kmem/rss_stat/trigger + + # allow enabling rss_stat_throttled + chmod 0666 /sys/kernel/tracing/events/synthetic/rss_stat_throttled/enable + chmod 0666 /sys/kernel/debug/tracing/events/synthetic/rss_stat_throttled/enable + +on late-init && property:ro.boot.fastboot.boottrace=enabled + setprop debug.atrace.tags.enableflags 802922 + setprop persist.traced.enable 0 + write /sys/kernel/debug/tracing/tracing_on 1 + write /sys/kernel/tracing/tracing_on 1 # Only create the tracing instance if persist.mm_events.enabled # Attempting to remove the tracing instance after it has been created @@ -393,3 +405,10 @@ on property:persist.debug.atrace.boottrace=1 service boottrace /system/bin/atrace --async_start -f /data/misc/boottrace/categories disabled oneshot + +on property:sys.boot_completed=1 && property:ro.boot.fastboot.boottrace=enabled + setprop debug.atrace.tags.enableflags 0 + setprop persist.traced.enable 1 + write /sys/kernel/debug/tracing/tracing_on 0 + write /sys/kernel/tracing/tracing_on 0 + diff --git a/libs/binder/Android.bp b/libs/binder/Android.bp index da87e03162..baeb565b5e 100644 --- a/libs/binder/Android.bp +++ b/libs/binder/Android.bp @@ -74,9 +74,6 @@ cc_defaults { name: "libbinder_common_defaults", host_supported: true, - // for vndbinder and binderRpcTest - vendor_available: true, - srcs: [ "Binder.cpp", "BpBinder.cpp", @@ -200,7 +197,6 @@ cc_defaults { cc_library_headers { name: "trusty_mock_headers", - vendor_available: true, host_supported: true, export_include_dirs: [ @@ -215,7 +211,6 @@ cc_library_headers { cc_defaults { name: "trusty_mock_defaults", - vendor_available: true, host_supported: true, header_libs: [ @@ -309,6 +304,8 @@ cc_library { version_script: "libbinder.map", + // for vndbinder + vendor_available: true, vndk: { enabled: true, }, @@ -471,7 +468,6 @@ cc_library_shared { cc_library_static { name: "libbinder_tls_static", defaults: ["libbinder_tls_defaults"], - vendor_available: true, visibility: [ ":__subpackages__", ], @@ -553,8 +549,10 @@ cc_library { // Do not expand the visibility. visibility: [ ":__subpackages__", - "//packages/modules/Virtualization:__subpackages__", + "//packages/modules/Virtualization/javalib/jni", + "//packages/modules/Virtualization/vm_payload", "//device/google/cuttlefish/shared/minidroid:__subpackages__", + "//system/software_defined_vehicle:__subpackages__", ], } diff --git a/libs/binder/OWNERS b/libs/binder/OWNERS index f954e74eba..bb17683a23 100644 --- a/libs/binder/OWNERS +++ b/libs/binder/OWNERS @@ -1,6 +1,4 @@ # Bug component: 32456 -ctate@google.com -hackbod@google.com maco@google.com smoreland@google.com tkjos@google.com diff --git a/libs/binder/rust/rpcbinder/Android.bp b/libs/binder/rust/rpcbinder/Android.bp index 38dd4fe187..0067a20484 100644 --- a/libs/binder/rust/rpcbinder/Android.bp +++ b/libs/binder/rust/rpcbinder/Android.bp @@ -25,8 +25,8 @@ rust_library { ], visibility: [ "//device/google/cuttlefish/shared/minidroid/sample", - "//packages/modules/Uwb", "//packages/modules/Virtualization:__subpackages__", + "//system/software_defined_vehicle:__subpackages__", ], apex_available: [ "//apex_available:platform", diff --git a/libs/binder/tests/Android.bp b/libs/binder/tests/Android.bp index e609987725..0f0d64aea8 100644 --- a/libs/binder/tests/Android.bp +++ b/libs/binder/tests/Android.bp @@ -138,7 +138,6 @@ cc_test { aidl_interface { name: "binderRpcTestIface", - vendor_available: true, host_supported: true, unstable: true, srcs: [ @@ -159,7 +158,6 @@ aidl_interface { cc_library_static { name: "libbinder_tls_test_utils", - vendor_available: true, host_supported: true, target: { darwin: { @@ -213,7 +211,6 @@ cc_defaults { defaults: [ "binderRpcTest_common_defaults", ], - vendor_available: true, gtest: false, auto_gen_config: false, srcs: [ @@ -224,18 +221,10 @@ cc_defaults { cc_defaults { name: "binderRpcTest_defaults", - vendor_available: true, target: { android: { test_suites: ["vts"], }, - - vendor: { - shared_libs: [ - "libbinder_trusty", - "libtrusty", - ], - }, }, defaults: [ "binderRpcTest_common_defaults", diff --git a/libs/binderdebug/include/binderdebug/BinderDebug.h b/libs/binderdebug/include/binderdebug/BinderDebug.h index dfd5a7cc3e..6ce8edfc7c 100644 --- a/libs/binderdebug/include/binderdebug/BinderDebug.h +++ b/libs/binderdebug/include/binderdebug/BinderDebug.h @@ -15,6 +15,8 @@ */ #pragma once +#include <utils/Errors.h> + #include <map> #include <vector> diff --git a/opengl/libs/EGL/BlobCache.cpp b/opengl/libs/EGL/BlobCache.cpp index 86c788d3b3..aecfc6b077 100644 --- a/opengl/libs/EGL/BlobCache.cpp +++ b/opengl/libs/EGL/BlobCache.cpp @@ -231,7 +231,7 @@ int BlobCache::flatten(void* buffer, size_t size) const { int BlobCache::unflatten(void const* buffer, size_t size) { // All errors should result in the BlobCache being in an empty state. - mCacheEntries.clear(); + clear(); // Read the cache header if (size < sizeof(Header)) { @@ -258,7 +258,7 @@ int BlobCache::unflatten(void const* buffer, size_t size) { size_t numEntries = header->mNumEntries; for (size_t i = 0; i < numEntries; i++) { if (byteOffset + sizeof(EntryHeader) > size) { - mCacheEntries.clear(); + clear(); ALOGE("unflatten: not enough room for cache entry headers"); return -EINVAL; } @@ -270,7 +270,7 @@ int BlobCache::unflatten(void const* buffer, size_t size) { size_t totalSize = align4(entrySize); if (byteOffset + totalSize > size) { - mCacheEntries.clear(); + clear(); ALOGE("unflatten: not enough room for cache entry headers"); return -EINVAL; } diff --git a/opengl/libs/EGL/BlobCache.h b/opengl/libs/EGL/BlobCache.h index ff03d30099..52078ff5fd 100644 --- a/opengl/libs/EGL/BlobCache.h +++ b/opengl/libs/EGL/BlobCache.h @@ -117,7 +117,10 @@ public: // clear flushes out all contents of the cache then the BlobCache, leaving // it in an empty state. - void clear() { mCacheEntries.clear(); } + void clear() { + mCacheEntries.clear(); + mTotalSize = 0; + } protected: // mMaxTotalSize is the maximum size that all cache entries can occupy. This diff --git a/opengl/libs/EGL/BlobCache_test.cpp b/opengl/libs/EGL/BlobCache_test.cpp index ceea0fb979..450c12837b 100644 --- a/opengl/libs/EGL/BlobCache_test.cpp +++ b/opengl/libs/EGL/BlobCache_test.cpp @@ -466,4 +466,31 @@ TEST_F(BlobCacheFlattenTest, UnflattenCatchesBufferTooSmall) { ASSERT_EQ(size_t(0), mBC2->get("abcd", 4, buf, 4)); } +// Test for a divide by zero bug (b/239862516). Before the fix, unflatten() would not reset +// mTotalSize when it encountered an error, which would trigger division by 0 in clean() in the +// right conditions. +TEST_F(BlobCacheFlattenTest, SetAfterFailedUnflatten) { + // isCleanable() must be true, so mTotalSize must be > mMaxTotalSize / 2 after unflattening + // after one entry is lost. To make this the case, MaxTotalSize is 30 and three 10 sized + // entries are used. One of those entries is lost, resulting in mTotalSize=20 + const size_t kMaxKeySize = 10; + const size_t kMaxValueSize = 10; + const size_t kMaxTotalSize = 30; + mBC.reset(new BlobCache(kMaxKeySize, kMaxValueSize, kMaxTotalSize)); + mBC2.reset(new BlobCache(kMaxKeySize, kMaxValueSize, kMaxTotalSize)); + mBC->set("aaaaa", 5, "aaaaa", 5); + mBC->set("bbbbb", 5, "bbbbb", 5); + mBC->set("ccccc", 5, "ccccc", 5); + + size_t size = mBC->getFlattenedSize(); + uint8_t* flat = new uint8_t[size]; + ASSERT_EQ(OK, mBC->flatten(flat, size)); + + ASSERT_EQ(BAD_VALUE, mBC2->unflatten(flat, size - 10)); + delete[] flat; + + // This line will trigger clean() which caused a crash. + mBC2->set("dddddddddd", 10, "dddddddddd", 10); +} + } // namespace android diff --git a/services/batteryservice/include/batteryservice/BatteryService.h b/services/batteryservice/include/batteryservice/BatteryService.h index a2e4115bd6..bf6189d7af 100644 --- a/services/batteryservice/include/batteryservice/BatteryService.h +++ b/services/batteryservice/include/batteryservice/BatteryService.h @@ -37,6 +37,7 @@ enum { BATTERY_PROP_CHARGING_POLICY = 7, // equals BATTERY_PROPERTY_CHARGING_POLICY BATTERY_PROP_MANUFACTURING_DATE = 8, // equals BATTERY_PROPERTY_MANUFACTURING_DATE BATTERY_PROP_FIRST_USAGE_DATE = 9, // equals BATTERY_PROPERTY_FIRST_USAGE_DATE + BATTERY_PROP_STATE_OF_HEALTH = 10, // equals BATTERY_PROPERTY_STATE_OF_HEALTH }; struct BatteryProperties { |