diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-09-10 12:20:25 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-09-10 12:20:25 +0000 |
commit | 734bf71acfd622562be29652191c09ddf18e2782 (patch) | |
tree | 2ff13d61206888296d3ec14bc1ac21e814695d85 | |
parent | 36eaa215e36d7f809e1c744babfa71c4cd27b415 (diff) | |
parent | e045d9f873f2232e18b5a56db180af409b19b614 (diff) | |
download | gchips-android13-mainline-media-release.tar.gz |
Snap for 9049251 from e045d9f873f2232e18b5a56db180af409b19b614 to mainline-media-releaseaml_med_331911000aml_med_331712010aml_med_331612000aml_med_331511000aml_med_331410000aml_med_331318000aml_med_331115000android13-mainline-media-release
Change-Id: I772dd21c65b21a65701096b268aa8179bf7fca82
-rw-r--r-- | gralloc4/src/hidl_common/Allocator.cpp | 10 |
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) |