summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnkit Goyal <layog@google.com>2022-09-09 02:04:36 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-09-09 02:04:36 +0000
commitfb73cb2c2642f727c6c8d9dd9d085749c0d96750 (patch)
treed4f3fd5ae593577076d990f0416d2ca6f5a97493
parentd23df999427f1f6da863e6eafbe0daacf09e92b6 (diff)
parentbcb6c52f4686c0c3baad9180a2038b0eae793bbf (diff)
downloadgchips-fb73cb2c2642f727c6c8d9dd9d085749c0d96750.tar.gz
Add a max limit to reserved regions am: 088bb8a6da am: bcb6c52f46
Original change: https://googleplex-android-review.googlesource.com/c/platform/hardware/google/gchips/+/19833153 Change-Id: I48c8566ea8fe270fbb6cbf106f2249471c9e07ad Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--gralloc4/src/hidl_common/Allocator.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/gralloc4/src/hidl_common/Allocator.cpp b/gralloc4/src/hidl_common/Allocator.cpp
index 6ca758a..3b8e62a 100644
--- a/gralloc4/src/hidl_common/Allocator.cpp
+++ b/gralloc4/src/hidl_common/Allocator.cpp
@@ -77,7 +77,17 @@ void allocate(const buffer_descriptor_t &bufferDescriptor, uint32_t count, IAllo
auto hnd = const_cast<private_handle_t *>(reinterpret_cast<const private_handle_t *>(tmpBuffer));
hnd->imapper_version = HIDL_MAPPER_VERSION_SCALED;
+ // 4k is rougly 7.9 MB with one byte per pixel. We are
+ // assuming that the reserved region might be needed for
+ // dynamic HDR and that represents the largest size.
+ uint64_t max_reserved_region_size = 8ull * 1024 * 1024;
hnd->reserved_region_size = bufferDescriptor.reserved_size;
+ if (hnd->reserved_region_size > max_reserved_region_size) {
+ MALI_GRALLOC_LOGE("%s, Requested reserved region size (%" PRIu64 ") is larger than allowed (%" PRIu64 ")",
+ __func__, hnd->reserved_region_size, max_reserved_region_size);
+ error = Error::BAD_VALUE;
+ break;
+ }
hnd->attr_size = mapper::common::shared_metadata_size() + hnd->reserved_region_size;
if (hnd->get_usage() & GRALLOC_USAGE_ROIINFO)