From d7fa4db748ccc2814a6b81127226135445a99513 Mon Sep 17 00:00:00 2001 From: Josh Gao Date: Mon, 22 Feb 2021 17:57:06 -0800 Subject: [PATCH] CachedAppOptimizer: fix fd leak. errno isn't modified when a syscall returns successfully: this would leak if errno was already non-zero before entering this function. Bug: http://b/172518739 Test: none Change-Id: I38050863ceca226a9c2d143c85e0713c6a6fe511 --- services/core/jni/com_android_server_am_CachedAppOptimizer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/core/jni/com_android_server_am_CachedAppOptimizer.cpp b/services/core/jni/com_android_server_am_CachedAppOptimizer.cpp index 4551d49d9e58a..f054e7c730152 100644 --- a/services/core/jni/com_android_server_am_CachedAppOptimizer.cpp +++ b/services/core/jni/com_android_server_am_CachedAppOptimizer.cpp @@ -86,7 +86,7 @@ static int compactMemory(const std::vector& vmas, int pid, int madviseType) int pidfd = syscall(__NR_pidfd_open, pid, 0); err = -errno; - if (err < 0) { + if (pidfd < 0) { // Skip compaction if failed to open pidfd with any error return err; }