From 7e8b93a750d1c0fe6993ae80584d30ae513cd6f1 Mon Sep 17 00:00:00 2001 From: Todd Frederick Date: Wed, 16 Oct 2024 02:10:02 +0000 Subject: Revert "Use MappedFile for mmap-related operations in CursorWindow" This reverts commit e28dd9f756fd7df72e39260e82a7569a3636d0af. Reason for revert: Breaks STS Bug: 372629475 Change-Id: I708ac6e193b1b4cc0adfc0875e075fe5fd5d7191 --- libs/androidfw/CursorWindow.cpp | 21 ++++++++------------- libs/androidfw/include/androidfw/CursorWindow.h | 4 ---- 2 files changed, 8 insertions(+), 17 deletions(-) (limited to 'libs/androidfw') diff --git a/libs/androidfw/CursorWindow.cpp b/libs/androidfw/CursorWindow.cpp index cbb1e8f82838..5e645cceea2d 100644 --- a/libs/androidfw/CursorWindow.cpp +++ b/libs/androidfw/CursorWindow.cpp @@ -18,12 +18,11 @@ #include +#include + #include "android-base/logging.h" -#include "android-base/mapped_file.h" #include "cutils/ashmem.h" -using android::base::MappedFile; - namespace android { /** @@ -40,7 +39,7 @@ CursorWindow::CursorWindow() { CursorWindow::~CursorWindow() { if (mAshmemFd != -1) { - mMappedFile.reset(); + ::munmap(mData, mSize); ::close(mAshmemFd); } else { free(mData); @@ -76,7 +75,6 @@ fail_silent: status_t CursorWindow::maybeInflate() { int ashmemFd = 0; void* newData = nullptr; - std::unique_ptr mappedFile; // Bail early when we can't expand any further if (mReadOnly || mSize == mInflatedSize) { @@ -97,12 +95,11 @@ status_t CursorWindow::maybeInflate() { goto fail_silent; } - mappedFile = MappedFile::FromFd(ashmemFd, 0, mInflatedSize, PROT_READ | PROT_WRITE); - if (mappedFile == nullptr) { + newData = ::mmap(nullptr, mInflatedSize, PROT_READ | PROT_WRITE, MAP_SHARED, ashmemFd, 0); + if (newData == MAP_FAILED) { PLOG(ERROR) << "Failed mmap"; goto fail_silent; } - newData = mappedFile->data(); if (ashmem_set_prot_region(ashmemFd, PROT_READ) < 0) { PLOG(ERROR) << "Failed ashmem_set_prot_region"; @@ -123,7 +120,6 @@ status_t CursorWindow::maybeInflate() { mData = newData; mSize = mInflatedSize; mSlotsOffset = newSlotsOffset; - mMappedFile = std::move(mappedFile); updateSlotsData(); } @@ -134,7 +130,7 @@ status_t CursorWindow::maybeInflate() { fail: LOG(ERROR) << "Failed maybeInflate"; fail_silent: - mappedFile.reset(); + ::munmap(newData, mInflatedSize); ::close(ashmemFd); return UNKNOWN_ERROR; } @@ -171,12 +167,11 @@ status_t CursorWindow::createFromParcel(Parcel* parcel, CursorWindow** outWindow goto fail_silent; } - window->mMappedFile = MappedFile::FromFd(window->mAshmemFd, 0, window->mSize, PROT_READ); - if (window->mMappedFile == nullptr) { + window->mData = ::mmap(nullptr, window->mSize, PROT_READ, MAP_SHARED, window->mAshmemFd, 0); + if (window->mData == MAP_FAILED) { PLOG(ERROR) << "Failed mmap"; goto fail_silent; } - window->mData = window->mMappedFile->data(); } else { window->mAshmemFd = -1; diff --git a/libs/androidfw/include/androidfw/CursorWindow.h b/libs/androidfw/include/androidfw/CursorWindow.h index c2eac12eb77d..9ec026a19c4c 100644 --- a/libs/androidfw/include/androidfw/CursorWindow.h +++ b/libs/androidfw/include/androidfw/CursorWindow.h @@ -26,8 +26,6 @@ #include "binder/Parcel.h" #include "utils/String8.h" -#include "android-base/mapped_file.h" - #define LOG_WINDOW(...) namespace android { @@ -151,8 +149,6 @@ private: String8 mName; int mAshmemFd = -1; void* mData = nullptr; - std::unique_ptr mMappedFile; - /** * Pointer to the first FieldSlot, used to optimize the extremely * hot code path of getFieldSlot(). -- cgit v1.2.3-59-g8ed1b