Merge "Proper duping / closing of FileDescriptors" into sc-dev am: cd77682736

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14686828

Change-Id: I9633dda4a42a394051497050c09cfe8193df9574
This commit is contained in:
Ytai Ben-tsvi
2021-05-25 22:09:28 +00:00
committed by Automerger Merge Worker

View File

@@ -76,8 +76,7 @@ public final class HidlMemoryUtil {
return new HidlMemory("ashmem", 0, null); return new HidlMemory("ashmem", 0, null);
} }
try { try (SharedMemory shmem = SharedMemory.create(name != null ? name : "", input.length)) {
SharedMemory shmem = SharedMemory.create(name != null ? name : "", input.length);
ByteBuffer buffer = shmem.mapReadWrite(); ByteBuffer buffer = shmem.mapReadWrite();
buffer.put(input); buffer.put(input);
shmem.unmap(buffer); shmem.unmap(buffer);
@@ -119,8 +118,7 @@ public final class HidlMemoryUtil {
return new HidlMemory("ashmem", 0, null); return new HidlMemory("ashmem", 0, null);
} }
try { try (SharedMemory shmem = SharedMemory.create(name != null ? name : "", input.size())) {
SharedMemory shmem = SharedMemory.create(name != null ? name : "", input.size());
ByteBuffer buffer = shmem.mapReadWrite(); ByteBuffer buffer = shmem.mapReadWrite();
for (Byte b : input) { for (Byte b : input) {
buffer.put(b); buffer.put(b);
@@ -214,8 +212,12 @@ public final class HidlMemoryUtil {
if (fd == null) { if (fd == null) {
return new HidlMemory("ashmem", 0, null); return new HidlMemory("ashmem", 0, null);
} }
NativeHandle handle = new NativeHandle(fd, true); try {
return new HidlMemory("ashmem", size, handle); NativeHandle handle = new NativeHandle(Os.dup(fd), true);
return new HidlMemory("ashmem", size, handle);
} catch (ErrnoException e) {
throw new RuntimeException(e);
}
} }
private static ByteBuffer getBuffer(@NonNull HidlMemory mem) { private static ByteBuffer getBuffer(@NonNull HidlMemory mem) {