91 lines
3.2 KiB
Diff
91 lines
3.2 KiB
Diff
diff --git a/base/memory/shared_memory_posix.cc b/base/memory/shared_memory_posix.cc
|
|
index e1289e7e1da0..aa718957cf26 100644
|
|
--- a/base/memory/shared_memory_posix.cc
|
|
+++ b/base/memory/shared_memory_posix.cc
|
|
@@ -29,6 +30,8 @@
|
|
|
|
#if defined(OS_ANDROID)
|
|
#include "base/os_compat_android.h"
|
|
+#endif
|
|
+#if defined(OS_ANDROID) || defined(__ANDROID__)
|
|
#include "third_party/ashmem/ashmem.h"
|
|
#endif
|
|
|
|
@@ -80,7 +83,7 @@ bool SharedMemory::CreateAndMapAnonymous(size_t size) {
|
|
return CreateAnonymous(size) && Map(size);
|
|
}
|
|
|
|
-#if !defined(OS_ANDROID)
|
|
+#if !defined(OS_ANDROID) && !defined(__ANDROID__)
|
|
|
|
// Chromium mostly only uses the unique/private shmem as specified by
|
|
// "name == L"". The exception is in the StatsTable.
|
|
@@ -252,7 +255,7 @@ bool SharedMemory::Open(const std::string& name, bool read_only) {
|
|
FileDescriptor(readonly_mapped_file, false), 0, shm_.GetGUID());
|
|
return result;
|
|
}
|
|
-#endif // !defined(OS_ANDROID)
|
|
+#endif // !defined(OS_ANDROID) && !defined(__ANDROID__)
|
|
|
|
bool SharedMemory::MapAt(off_t offset, size_t bytes) {
|
|
if (!shm_.IsValid())
|
|
@@ -264,7 +267,7 @@ bool SharedMemory::MapAt(off_t offset, size_t bytes) {
|
|
if (memory_)
|
|
return false;
|
|
|
|
-#if defined(OS_ANDROID)
|
|
+#if defined(OS_ANDROID) || defined(__ANDROID__)
|
|
// On Android, Map can be called with a size and offset of zero to use the
|
|
// ashmem-determined size.
|
|
if (bytes == 0) {
|
|
@@ -277,19 +280,19 @@ bool SharedMemory::MapAt(off_t offset, size_t bytes) {
|
|
|
|
// Sanity check. This shall catch invalid uses of the SharedMemory APIs
|
|
// but will not protect against direct mmap() attempts.
|
|
- if (shm_.IsReadOnly()) {
|
|
- // Use a DCHECK() to call writable mappings with read-only descriptors
|
|
- // in debug builds immediately. Return an error for release builds
|
|
- // or during unit-testing (assuming a ScopedLogAssertHandler was installed).
|
|
- DCHECK(read_only_)
|
|
- << "Trying to map a region writable with a read-only descriptor.";
|
|
- if (!read_only_) {
|
|
- return false;
|
|
- }
|
|
- if (!shm_.SetRegionReadOnly()) { // Ensure the region is read-only.
|
|
- return false;
|
|
- }
|
|
- }
|
|
+ // if (shm_.IsReadOnly()) {
|
|
+ // // Use a DCHECK() to call writable mappings with read-only descriptors
|
|
+ // // in debug builds immediately. Return an error for release builds
|
|
+ // // or during unit-testing (assuming a ScopedLogAssertHandler was installed).
|
|
+ // DCHECK(read_only_)
|
|
+ // << "Trying to map a region writable with a read-only descriptor.";
|
|
+ // if (!read_only_) {
|
|
+ // return false;
|
|
+ // }
|
|
+ // if (!shm_.SetRegionReadOnly()) { // Ensure the region is read-only.
|
|
+ // return false;
|
|
+ // }
|
|
+ // }
|
|
#endif
|
|
|
|
memory_ = mmap(nullptr, bytes, PROT_READ | (read_only_ ? 0 : PROT_WRITE),
|
|
@@ -334,7 +339,7 @@ SharedMemoryHandle SharedMemory::TakeHandle() {
|
|
return handle_copy;
|
|
}
|
|
|
|
-#if !defined(OS_ANDROID)
|
|
+#if !defined(OS_ANDROID) && !defined(__ANDROID__)
|
|
void SharedMemory::Close() {
|
|
if (shm_.IsValid()) {
|
|
shm_.Close();
|
|
@@ -374,6 +379,6 @@ SharedMemoryHandle SharedMemory::GetReadOnlyHandle() const {
|
|
CHECK(readonly_shm_.IsValid());
|
|
return readonly_shm_.Duplicate();
|
|
}
|
|
-#endif // !defined(OS_ANDROID)
|
|
+#endif // !defined(OS_ANDROID) && !defined(__ANDROID__)
|
|
|
|
} // namespace base
|