From a96da05ab8f56924cc9ec587cac08bdae9633d15 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Wed, 9 Oct 2019 16:48:22 -0700 Subject: [PATCH] fix CircularBuffer ashmem fallback (#1763) --- filament/backend/src/CircularBuffer.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/filament/backend/src/CircularBuffer.cpp b/filament/backend/src/CircularBuffer.cpp index 86bee8d6b1..0d298d2c27 100644 --- a/filament/backend/src/CircularBuffer.cpp +++ b/filament/backend/src/CircularBuffer.cpp @@ -90,19 +90,24 @@ void* CircularBuffer::alloc(size_t size) noexcept { if (UTILS_UNLIKELY(mUsesAshmem < 0)) { // ashmem failed - if (vaddr_guard != MAP_FAILED) + if (vaddr_guard != MAP_FAILED) { munmap(vaddr_guard, size); + } - if (vaddr_shadow != MAP_FAILED) + if (vaddr_shadow != MAP_FAILED) { munmap(vaddr_shadow, size); + } - if (vaddr != MAP_FAILED) + if (vaddr != MAP_FAILED) { munmap(vaddr, size); + } - if (fd >= 0) + if (fd >= 0) { close(fd); + } - data = mmap(nullptr, size * 2 + BLOCK_SIZE, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + data = mmap(nullptr, size * 2 + BLOCK_SIZE, + PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); ASSERT_POSTCONDITION(data, "couldn't allocate %u KiB of virtual address space for the command buffer",