From bd925d6611ef6cae9ffef98a5d062eae0bfb07ff Mon Sep 17 00:00:00 2001 From: Davanum Srinivas Date: Wed, 7 Aug 2019 11:19:09 -0400 Subject: [PATCH] [TOB-K8S-027] Fix Incorrect isKernelPid check isKernelPid should explicitly check the error returned from os.Readlink and return true only if the error value is ENOENT. Without this fix, if Readlink returned say ENAMETOOLONG or EACESS, we would still count the process as a kernel process (which is not true). --- pkg/kubelet/cm/container_manager_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/kubelet/cm/container_manager_linux.go b/pkg/kubelet/cm/container_manager_linux.go index 4c09fde5d76..a1e6e6e0e7d 100644 --- a/pkg/kubelet/cm/container_manager_linux.go +++ b/pkg/kubelet/cm/container_manager_linux.go @@ -888,7 +888,7 @@ func ensureSystemCgroups(rootCgroupPath string, manager *fs.Manager) error { func isKernelPid(pid int) bool { // Kernel threads have no associated executable. _, err := os.Readlink(fmt.Sprintf("/proc/%d/exe", pid)) - return err != nil + return err != nil && os.IsNotExist(err) } func (cm *containerManagerImpl) GetCapacity() v1.ResourceList {