diff --git a/init/Kconfig b/init/Kconfig index 7a5ccb2e9e0fbde78390aa59580d3f9d64cc9c85..d24cc75caf65a03d5b61e8dee89ecf6c5b2c1770 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -865,7 +865,6 @@ config UIDGID_CONVERTED # List of kernel pieces that need user namespace work # Features - depends on CGROUPS = n depends on MIGRATION = n depends on NUMA = n depends on SYSVIPC = n diff --git a/kernel/cgroup.c b/kernel/cgroup.c index ed64ccac67c9707d0b4310227eb84d820710fbec..c8329b0c25762bbd85422a4df53848c22677eb0a 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c @@ -2160,9 +2160,9 @@ static int attach_task_by_pid(struct cgroup *cgrp, u64 pid, bool threadgroup) * only need to check permissions on one of them. */ tcred = __task_cred(tsk); - if (cred->euid && - cred->euid != tcred->uid && - cred->euid != tcred->suid) { + if (!uid_eq(cred->euid, GLOBAL_ROOT_UID) && + !uid_eq(cred->euid, tcred->uid) && + !uid_eq(cred->euid, tcred->suid)) { rcu_read_unlock(); ret = -EACCES; goto out_unlock_cgroup;