Loading libcutils/ashmem-dev.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -159,9 +159,11 @@ static bool __has_memfd_support() { return false; } /* Check if kernel support exists, otherwise fall back to ashmem */ // Check if kernel support exists, otherwise fall back to ashmem. // This code needs to build on old API levels, so we can't use the libc // wrapper. android::base::unique_fd fd( syscall(__NR_memfd_create, "test_android_memfd", MFD_ALLOW_SEALING)); syscall(__NR_memfd_create, "test_android_memfd", MFD_CLOEXEC | MFD_ALLOW_SEALING)); if (fd == -1) { ALOGE("memfd_create failed: %s, no memfd support.\n", strerror(errno)); return false; Loading Loading @@ -333,7 +335,9 @@ int ashmem_valid(int fd) } static int memfd_create_region(const char* name, size_t size) { android::base::unique_fd fd(syscall(__NR_memfd_create, name, MFD_ALLOW_SEALING)); // This code needs to build on old API levels, so we can't use the libc // wrapper. android::base::unique_fd fd(syscall(__NR_memfd_create, name, MFD_CLOEXEC | MFD_ALLOW_SEALING)); if (fd == -1) { ALOGE("memfd_create(%s, %zd) failed: %s\n", name, size, strerror(errno)); Loading libcutils/ashmem_test.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,11 @@ void TestCreateRegion(size_t size, unique_fd &fd, int prot) { ASSERT_TRUE(ashmem_valid(fd)); ASSERT_EQ(size, static_cast<size_t>(ashmem_get_size_region(fd))); ASSERT_EQ(0, ashmem_set_prot_region(fd, prot)); // We've been inconsistent historically about whether or not these file // descriptors were CLOEXEC. Make sure we're consistent going forward. // https://issuetracker.google.com/165667331 ASSERT_EQ(FD_CLOEXEC, (fcntl(fd, F_GETFD) & FD_CLOEXEC)); } void TestMmap(const unique_fd& fd, size_t size, int prot, void** region, off_t off = 0) { Loading Loading
libcutils/ashmem-dev.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -159,9 +159,11 @@ static bool __has_memfd_support() { return false; } /* Check if kernel support exists, otherwise fall back to ashmem */ // Check if kernel support exists, otherwise fall back to ashmem. // This code needs to build on old API levels, so we can't use the libc // wrapper. android::base::unique_fd fd( syscall(__NR_memfd_create, "test_android_memfd", MFD_ALLOW_SEALING)); syscall(__NR_memfd_create, "test_android_memfd", MFD_CLOEXEC | MFD_ALLOW_SEALING)); if (fd == -1) { ALOGE("memfd_create failed: %s, no memfd support.\n", strerror(errno)); return false; Loading Loading @@ -333,7 +335,9 @@ int ashmem_valid(int fd) } static int memfd_create_region(const char* name, size_t size) { android::base::unique_fd fd(syscall(__NR_memfd_create, name, MFD_ALLOW_SEALING)); // This code needs to build on old API levels, so we can't use the libc // wrapper. android::base::unique_fd fd(syscall(__NR_memfd_create, name, MFD_CLOEXEC | MFD_ALLOW_SEALING)); if (fd == -1) { ALOGE("memfd_create(%s, %zd) failed: %s\n", name, size, strerror(errno)); Loading
libcutils/ashmem_test.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,11 @@ void TestCreateRegion(size_t size, unique_fd &fd, int prot) { ASSERT_TRUE(ashmem_valid(fd)); ASSERT_EQ(size, static_cast<size_t>(ashmem_get_size_region(fd))); ASSERT_EQ(0, ashmem_set_prot_region(fd, prot)); // We've been inconsistent historically about whether or not these file // descriptors were CLOEXEC. Make sure we're consistent going forward. // https://issuetracker.google.com/165667331 ASSERT_EQ(FD_CLOEXEC, (fcntl(fd, F_GETFD) & FD_CLOEXEC)); } void TestMmap(const unique_fd& fd, size_t size, int prot, void** region, off_t off = 0) { Loading