]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - kernel/cred.c
signal: In get_signal test for signal_group_exit every time through the loop
[mirror_ubuntu-jammy-kernel.git] / kernel / cred.c
index 1ae0b4948a5a820d4ea3f758c733418dcb3f286f..29a653f4c671dba2866bd11ae4bfae91e1e20d4e 100644 (file)
@@ -665,26 +665,20 @@ EXPORT_SYMBOL(cred_fscmp);
 
 int set_cred_ucounts(struct cred *new)
 {
-       struct task_struct *task = current;
-       const struct cred *old = task->real_cred;
        struct ucounts *new_ucounts, *old_ucounts = new->ucounts;
 
-       if (new->user == old->user && new->user_ns == old->user_ns)
-               return 0;
-
        /*
         * This optimization is needed because alloc_ucounts() uses locks
         * for table lookups.
         */
-       if (old_ucounts && old_ucounts->ns == new->user_ns && uid_eq(old_ucounts->uid, new->euid))
+       if (old_ucounts->ns == new->user_ns && uid_eq(old_ucounts->uid, new->uid))
                return 0;
 
-       if (!(new_ucounts = alloc_ucounts(new->user_ns, new->euid)))
+       if (!(new_ucounts = alloc_ucounts(new->user_ns, new->uid)))
                return -EAGAIN;
 
        new->ucounts = new_ucounts;
-       if (old_ucounts)
-               put_ucounts(old_ucounts);
+       put_ucounts(old_ucounts);
 
        return 0;
 }
@@ -773,14 +767,14 @@ EXPORT_SYMBOL(prepare_kernel_cred);
 /**
  * set_security_override - Set the security ID in a set of credentials
  * @new: The credentials to alter
- * @secid: The LSM security ID to set
+ * @blob: The LSM security information to set
  *
  * Set the LSM security ID in a set of credentials so that the subjective
  * security is overridden when an alternative set of credentials is used.
  */
-int set_security_override(struct cred *new, u32 secid)
+int set_security_override(struct cred *new, struct lsmblob *blob)
 {
-       return security_kernel_act_as(new, secid);
+       return security_kernel_act_as(new, blob);
 }
 EXPORT_SYMBOL(set_security_override);
 
@@ -796,14 +790,14 @@ EXPORT_SYMBOL(set_security_override);
  */
 int set_security_override_from_ctx(struct cred *new, const char *secctx)
 {
-       u32 secid;
+       struct lsmblob blob;
        int ret;
 
-       ret = security_secctx_to_secid(secctx, strlen(secctx), &secid);
+       ret = security_secctx_to_secid(secctx, strlen(secctx), &blob);
        if (ret < 0)
                return ret;
 
-       return set_security_override(new, secid);
+       return set_security_override(new, &blob);
 }
 EXPORT_SYMBOL(set_security_override_from_ctx);