]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - kernel/groups.c
groups: Consolidate the setgroups permission checks
[karo-tx-linux.git] / kernel / groups.c
index 451698f86cfadae2eef8805df0795310b3f1d797..02d8a251c47656593690ceabd36ea42f42cc2cdb 100644 (file)
@@ -213,6 +213,13 @@ out:
        return i;
 }
 
+bool may_setgroups(void)
+{
+       struct user_namespace *user_ns = current_user_ns();
+
+       return ns_capable(user_ns, CAP_SETGID);
+}
+
 /*
  *     SMP: Our groups are copy-on-write. We can set them safely
  *     without another task interfering.
@@ -223,7 +230,7 @@ SYSCALL_DEFINE2(setgroups, int, gidsetsize, gid_t __user *, grouplist)
        struct group_info *group_info;
        int retval;
 
-       if (!ns_capable(current_user_ns(), CAP_SETGID))
+       if (!may_setgroups())
                return -EPERM;
        if ((unsigned)gidsetsize > NGROUPS_MAX)
                return -EINVAL;