Revert "Parcel: fdsan"
Revert submission 23699976-fdsan-parcel
Reason for revert: Possible culprit for b/288448299
Reverted changes: /q/submissionid:23699976-fdsan-parcel
Change-Id: I8d7b4e222598436271ee03cfc8826910327c98aa
diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp
index 1312d22..0aca163 100644
--- a/libs/binder/Parcel.cpp
+++ b/libs/binder/Parcel.cpp
@@ -69,10 +69,6 @@
typedef uintptr_t binder_uintptr_t;
#endif // BINDER_WITH_KERNEL_IPC
-#ifdef __BIONIC__
-#include <android/fdsan.h>
-#endif
-
#define LOG_REFS(...)
// #define LOG_REFS(...) ALOG(LOG_DEBUG, LOG_TAG, __VA_ARGS__)
#define LOG_ALLOC(...)
@@ -113,37 +109,6 @@
// Maximum size of a blob to transfer in-place.
static const size_t BLOB_INPLACE_LIMIT = 16 * 1024;
-#if defined(__BIONIC__)
-static void FdTag(int fd, const void* old_addr, const void* new_addr) {
- if (android_fdsan_exchange_owner_tag) {
- uint64_t old_tag = android_fdsan_create_owner_tag(ANDROID_FDSAN_OWNER_TYPE_PARCEL,
- reinterpret_cast<uint64_t>(old_addr));
- uint64_t new_tag = android_fdsan_create_owner_tag(ANDROID_FDSAN_OWNER_TYPE_PARCEL,
- reinterpret_cast<uint64_t>(new_addr));
- android_fdsan_exchange_owner_tag(fd, old_tag, new_tag);
- }
-}
-static void FdTagClose(int fd, const void* addr) {
- if (android_fdsan_close_with_tag) {
- uint64_t tag = android_fdsan_create_owner_tag(ANDROID_FDSAN_OWNER_TYPE_PARCEL,
- reinterpret_cast<uint64_t>(addr));
- android_fdsan_close_with_tag(fd, tag);
- } else {
- close(fd);
- }
-}
-#else
-static void FdTag(int fd, const void* old_addr, const void* new_addr) {
- (void)fd;
- (void)old_addr;
- (void)new_addr;
-}
-static void FdTagClose(int fd, const void* addr) {
- (void)addr;
- close(fd);
-}
-#endif
-
enum {
BLOB_INPLACE = 0,
BLOB_ASHMEM_IMMUTABLE = 1,
@@ -169,9 +134,6 @@
return;
}
case BINDER_TYPE_FD: {
- if (obj.cookie != 0) { // owned
- FdTag(obj.handle, nullptr, who);
- }
return;
}
}
@@ -197,10 +159,8 @@
return;
}
case BINDER_TYPE_FD: {
- // note: this path is not used when mOwner, so the tag is also released
- // in 'closeFileDescriptors'
if (obj.cookie != 0) { // owned
- FdTagClose(obj.handle, who);
+ close(obj.handle);
}
return;
}
@@ -594,6 +554,7 @@
kernelFields->mObjectsSize++;
flat_binder_object* flat = reinterpret_cast<flat_binder_object*>(mData + off);
+ acquire_object(proc, *flat, this);
if (flat->hdr.type == BINDER_TYPE_FD) {
// If this is a file descriptor, we need to dup it so the
@@ -606,8 +567,6 @@
err = FDS_NOT_ALLOWED;
}
}
-
- acquire_object(proc, *flat, this);
}
}
#else
@@ -2558,8 +2517,7 @@
reinterpret_cast<flat_binder_object*>(mData + kernelFields->mObjects[i]);
if (flat->hdr.type == BINDER_TYPE_FD) {
// ALOGI("Closing fd: %ld", flat->handle);
- // FDs from the kernel are always owned
- FdTagClose(flat->handle, this);
+ close(flat->handle);
}
}
#else // BINDER_WITH_KERNEL_IPC
@@ -2640,10 +2598,6 @@
kernelFields->mObjectsSize = 0;
break;
}
- if (type == BINDER_TYPE_FD) {
- // FDs from the kernel are always owned
- FdTag(flat->handle, 0, this);
- }
minOffset = offset + sizeof(flat_binder_object);
}
scanForFds();