aaudio: fix mmap result checking
Was checking for nullptr not MAP_FAILED
Bug: 33398120
Test: see mmap() docs
Change-Id: I02d178cb0188f8b0d6cd009699dccc7c97952e4b
Signed-off-by: Phil Burk <philburk@google.com>
diff --git a/media/libaaudio/src/binding/SharedMemoryParcelable.cpp b/media/libaaudio/src/binding/SharedMemoryParcelable.cpp
index 0f501dd..7e77ca0 100644
--- a/media/libaaudio/src/binding/SharedMemoryParcelable.cpp
+++ b/media/libaaudio/src/binding/SharedMemoryParcelable.cpp
@@ -72,13 +72,13 @@
}
aaudio_result_t SharedMemoryParcelable::close() {
- if (mResolvedAddress != nullptr) {
+ if (mResolvedAddress != MMAP_UNRESOLVED_ADDRESS) {
int err = munmap(mResolvedAddress, mSizeInBytes);
if (err < 0) {
ALOGE("SharedMemoryParcelable::close() munmap() failed %d", err);
return AAudioConvert_androidToAAudioResult(err);
}
- mResolvedAddress = nullptr;
+ mResolvedAddress = MMAP_UNRESOLVED_ADDRESS;
}
if (mFd != -1) {
::close(mFd);
@@ -99,11 +99,12 @@
offsetInBytes, sizeInBytes, mSizeInBytes);
return AAUDIO_ERROR_OUT_OF_RANGE;
}
- if (mResolvedAddress == nullptr) {
+ if (mResolvedAddress == MMAP_UNRESOLVED_ADDRESS) {
mResolvedAddress = (uint8_t *) mmap(0, mSizeInBytes, PROT_READ|PROT_WRITE,
MAP_SHARED, mFd, 0);
- if (mResolvedAddress == nullptr) {
- ALOGE("SharedMemoryParcelable mmap failed for fd = %d", mFd);
+ if (mResolvedAddress == MMAP_UNRESOLVED_ADDRESS) {
+ ALOGE("SharedMemoryParcelable mmap failed for fd = %d, errno = %s",
+ mFd, strerror(errno));
return AAUDIO_ERROR_INTERNAL;
}
}
diff --git a/media/libaaudio/src/binding/SharedMemoryParcelable.h b/media/libaaudio/src/binding/SharedMemoryParcelable.h
index 22e16f0..c4feb48 100644
--- a/media/libaaudio/src/binding/SharedMemoryParcelable.h
+++ b/media/libaaudio/src/binding/SharedMemoryParcelable.h
@@ -64,9 +64,12 @@
void dump();
protected:
+
+#define MMAP_UNRESOLVED_ADDRESS reinterpret_cast<uint8_t*>(MAP_FAILED)
+
int mFd = -1;
int32_t mSizeInBytes = 0;
- uint8_t *mResolvedAddress = nullptr;
+ uint8_t *mResolvedAddress = MMAP_UNRESOLVED_ADDRESS;
};
} /* namespace aaudio */
diff --git a/services/oboeservice/SharedRingBuffer.cpp b/services/oboeservice/SharedRingBuffer.cpp
index efcc9d6..03c160d 100644
--- a/services/oboeservice/SharedRingBuffer.cpp
+++ b/services/oboeservice/SharedRingBuffer.cpp
@@ -18,6 +18,8 @@
//#define LOG_NDEBUG 0
#include <utils/Log.h>
+#include <sys/mman.h>
+
#include "binding/RingBufferParcelable.h"
#include "binding/AudioEndpointParcelable.h"