Loading libs/binder/IPCThreadState.cpp +5 −5 Original line number Diff line number Diff line Loading @@ -895,21 +895,21 @@ status_t IPCThreadState::waitForResponse(Parcel *reply, status_t *acquireResult) tr.data_size, reinterpret_cast<const binder_size_t*>(tr.data.ptr.offsets), tr.offsets_size/sizeof(binder_size_t), freeBuffer, this); freeBuffer); } else { err = *reinterpret_cast<const status_t*>(tr.data.ptr.buffer); freeBuffer(nullptr, reinterpret_cast<const uint8_t*>(tr.data.ptr.buffer), tr.data_size, reinterpret_cast<const binder_size_t*>(tr.data.ptr.offsets), tr.offsets_size/sizeof(binder_size_t), this); tr.offsets_size/sizeof(binder_size_t)); } } else { freeBuffer(nullptr, reinterpret_cast<const uint8_t*>(tr.data.ptr.buffer), tr.data_size, reinterpret_cast<const binder_size_t*>(tr.data.ptr.offsets), tr.offsets_size/sizeof(binder_size_t), this); tr.offsets_size/sizeof(binder_size_t)); continue; } } Loading Loading @@ -1183,7 +1183,7 @@ status_t IPCThreadState::executeCommand(int32_t cmd) reinterpret_cast<const uint8_t*>(tr.data.ptr.buffer), tr.data_size, reinterpret_cast<const binder_size_t*>(tr.data.ptr.offsets), tr.offsets_size/sizeof(binder_size_t), freeBuffer, this); tr.offsets_size/sizeof(binder_size_t), freeBuffer); const void* origServingStackPointer = mServingStackPointer; mServingStackPointer = &origServingStackPointer; // anything on the stack Loading Loading @@ -1370,7 +1370,7 @@ status_t IPCThreadState::freeze(pid_t pid, bool enable, uint32_t timeout_ms) { void IPCThreadState::freeBuffer(Parcel* parcel, const uint8_t* data, size_t /*dataSize*/, const binder_size_t* /*objects*/, size_t /*objectsSize*/, void* /*cookie*/) size_t /*objectsSize*/) { //ALOGI("Freeing parcel %p", &parcel); IF_LOG_COMMANDS() { Loading libs/binder/Parcel.cpp +3 −4 Original line number Diff line number Diff line Loading @@ -2498,7 +2498,7 @@ size_t Parcel::ipcObjectsCount() const } void Parcel::ipcSetDataReference(const uint8_t* data, size_t dataSize, const binder_size_t* objects, size_t objectsCount, release_func relFunc, void* relCookie) const binder_size_t* objects, size_t objectsCount, release_func relFunc) { binder_size_t minOffset = 0; freeDataNoInit(); Loading @@ -2513,7 +2513,6 @@ void Parcel::ipcSetDataReference(const uint8_t* data, size_t dataSize, mNextObjectHint = 0; mObjectsSorted = false; mOwner = relFunc; mOwnerCookie = relCookie; for (size_t i = 0; i < mObjectsSize; i++) { binder_size_t offset = mObjects[i]; if (offset < minOffset) { Loading Loading @@ -2614,7 +2613,7 @@ void Parcel::freeDataNoInit() if (mOwner) { LOG_ALLOC("Parcel %p: freeing other owner data", this); //ALOGI("Freeing data ref of %p (pid=%d)", this, getpid()); mOwner(this, mData, mDataSize, mObjects, mObjectsSize, mOwnerCookie); mOwner(this, mData, mDataSize, mObjects, mObjectsSize); } else { LOG_ALLOC("Parcel %p: freeing allocated data", this); releaseObjects(); Loading Loading @@ -2777,7 +2776,7 @@ status_t Parcel::continueWrite(size_t desired) memcpy(objects, mObjects, objectsSize*sizeof(binder_size_t)); } //ALOGI("Freeing data ref of %p (pid=%d)", this, getpid()); mOwner(this, mData, mDataSize, mObjects, mObjectsSize, mOwnerCookie); mOwner(this, mData, mDataSize, mObjects, mObjectsSize); mOwner = nullptr; LOG_ALLOC("Parcel %p: taking ownership of %zu capacity", this, desired); Loading libs/binder/include/binder/IPCThreadState.h +2 −3 Original line number Diff line number Diff line Loading @@ -185,8 +185,7 @@ private: static void threadDestructor(void *st); static void freeBuffer(Parcel* parcel, const uint8_t* data, size_t dataSize, const binder_size_t* objects, size_t objectsSize, void* cookie); const binder_size_t* objects, size_t objectsSize); const sp<ProcessState> mProcess; Vector<BBinder*> mPendingStrongDerefs; Loading libs/binder/include/binder/Parcel.h +8 −9 Original line number Diff line number Diff line Loading @@ -485,11 +485,12 @@ public: // uid. uid_t readCallingWorkSourceUid() const; void print(TextOutput& to, uint32_t flags = 0) const; private: typedef void (*release_func)(Parcel* parcel, const uint8_t* data, size_t dataSize, const binder_size_t* objects, size_t objectsSize, void* cookie); const binder_size_t* objects, size_t objectsSize); uintptr_t ipcData() const; size_t ipcDataSize() const; Loading @@ -497,12 +498,8 @@ private: size_t ipcObjectsCount() const; void ipcSetDataReference(const uint8_t* data, size_t dataSize, const binder_size_t* objects, size_t objectsCount, release_func relFunc, void* relCookie); release_func relFunc); public: void print(TextOutput& to, uint32_t flags = 0) const; private: Parcel(const Parcel& o); Parcel& operator=(const Parcel& o); Loading Loading @@ -609,7 +606,9 @@ private: mutable bool mDeallocZero; release_func mOwner; void* mOwnerCookie; // TODO(167966510): reserved for binder/version/stability void* mReserved = reinterpret_cast<void*>(0xAAAAAAAA); class Blob { public: Loading Loading
libs/binder/IPCThreadState.cpp +5 −5 Original line number Diff line number Diff line Loading @@ -895,21 +895,21 @@ status_t IPCThreadState::waitForResponse(Parcel *reply, status_t *acquireResult) tr.data_size, reinterpret_cast<const binder_size_t*>(tr.data.ptr.offsets), tr.offsets_size/sizeof(binder_size_t), freeBuffer, this); freeBuffer); } else { err = *reinterpret_cast<const status_t*>(tr.data.ptr.buffer); freeBuffer(nullptr, reinterpret_cast<const uint8_t*>(tr.data.ptr.buffer), tr.data_size, reinterpret_cast<const binder_size_t*>(tr.data.ptr.offsets), tr.offsets_size/sizeof(binder_size_t), this); tr.offsets_size/sizeof(binder_size_t)); } } else { freeBuffer(nullptr, reinterpret_cast<const uint8_t*>(tr.data.ptr.buffer), tr.data_size, reinterpret_cast<const binder_size_t*>(tr.data.ptr.offsets), tr.offsets_size/sizeof(binder_size_t), this); tr.offsets_size/sizeof(binder_size_t)); continue; } } Loading Loading @@ -1183,7 +1183,7 @@ status_t IPCThreadState::executeCommand(int32_t cmd) reinterpret_cast<const uint8_t*>(tr.data.ptr.buffer), tr.data_size, reinterpret_cast<const binder_size_t*>(tr.data.ptr.offsets), tr.offsets_size/sizeof(binder_size_t), freeBuffer, this); tr.offsets_size/sizeof(binder_size_t), freeBuffer); const void* origServingStackPointer = mServingStackPointer; mServingStackPointer = &origServingStackPointer; // anything on the stack Loading Loading @@ -1370,7 +1370,7 @@ status_t IPCThreadState::freeze(pid_t pid, bool enable, uint32_t timeout_ms) { void IPCThreadState::freeBuffer(Parcel* parcel, const uint8_t* data, size_t /*dataSize*/, const binder_size_t* /*objects*/, size_t /*objectsSize*/, void* /*cookie*/) size_t /*objectsSize*/) { //ALOGI("Freeing parcel %p", &parcel); IF_LOG_COMMANDS() { Loading
libs/binder/Parcel.cpp +3 −4 Original line number Diff line number Diff line Loading @@ -2498,7 +2498,7 @@ size_t Parcel::ipcObjectsCount() const } void Parcel::ipcSetDataReference(const uint8_t* data, size_t dataSize, const binder_size_t* objects, size_t objectsCount, release_func relFunc, void* relCookie) const binder_size_t* objects, size_t objectsCount, release_func relFunc) { binder_size_t minOffset = 0; freeDataNoInit(); Loading @@ -2513,7 +2513,6 @@ void Parcel::ipcSetDataReference(const uint8_t* data, size_t dataSize, mNextObjectHint = 0; mObjectsSorted = false; mOwner = relFunc; mOwnerCookie = relCookie; for (size_t i = 0; i < mObjectsSize; i++) { binder_size_t offset = mObjects[i]; if (offset < minOffset) { Loading Loading @@ -2614,7 +2613,7 @@ void Parcel::freeDataNoInit() if (mOwner) { LOG_ALLOC("Parcel %p: freeing other owner data", this); //ALOGI("Freeing data ref of %p (pid=%d)", this, getpid()); mOwner(this, mData, mDataSize, mObjects, mObjectsSize, mOwnerCookie); mOwner(this, mData, mDataSize, mObjects, mObjectsSize); } else { LOG_ALLOC("Parcel %p: freeing allocated data", this); releaseObjects(); Loading Loading @@ -2777,7 +2776,7 @@ status_t Parcel::continueWrite(size_t desired) memcpy(objects, mObjects, objectsSize*sizeof(binder_size_t)); } //ALOGI("Freeing data ref of %p (pid=%d)", this, getpid()); mOwner(this, mData, mDataSize, mObjects, mObjectsSize, mOwnerCookie); mOwner(this, mData, mDataSize, mObjects, mObjectsSize); mOwner = nullptr; LOG_ALLOC("Parcel %p: taking ownership of %zu capacity", this, desired); Loading
libs/binder/include/binder/IPCThreadState.h +2 −3 Original line number Diff line number Diff line Loading @@ -185,8 +185,7 @@ private: static void threadDestructor(void *st); static void freeBuffer(Parcel* parcel, const uint8_t* data, size_t dataSize, const binder_size_t* objects, size_t objectsSize, void* cookie); const binder_size_t* objects, size_t objectsSize); const sp<ProcessState> mProcess; Vector<BBinder*> mPendingStrongDerefs; Loading
libs/binder/include/binder/Parcel.h +8 −9 Original line number Diff line number Diff line Loading @@ -485,11 +485,12 @@ public: // uid. uid_t readCallingWorkSourceUid() const; void print(TextOutput& to, uint32_t flags = 0) const; private: typedef void (*release_func)(Parcel* parcel, const uint8_t* data, size_t dataSize, const binder_size_t* objects, size_t objectsSize, void* cookie); const binder_size_t* objects, size_t objectsSize); uintptr_t ipcData() const; size_t ipcDataSize() const; Loading @@ -497,12 +498,8 @@ private: size_t ipcObjectsCount() const; void ipcSetDataReference(const uint8_t* data, size_t dataSize, const binder_size_t* objects, size_t objectsCount, release_func relFunc, void* relCookie); release_func relFunc); public: void print(TextOutput& to, uint32_t flags = 0) const; private: Parcel(const Parcel& o); Parcel& operator=(const Parcel& o); Loading Loading @@ -609,7 +606,9 @@ private: mutable bool mDeallocZero; release_func mOwner; void* mOwnerCookie; // TODO(167966510): reserved for binder/version/stability void* mReserved = reinterpret_cast<void*>(0xAAAAAAAA); class Blob { public: Loading