Lines Matching refs:new

203 	struct cred *new;  in cred_alloc_blank()  local
205 new = kmem_cache_zalloc(cred_jar, GFP_KERNEL); in cred_alloc_blank()
206 if (!new) in cred_alloc_blank()
209 atomic_set(&new->usage, 1); in cred_alloc_blank()
211 new->magic = CRED_MAGIC; in cred_alloc_blank()
214 if (security_cred_alloc_blank(new, GFP_KERNEL) < 0) in cred_alloc_blank()
217 return new; in cred_alloc_blank()
220 abort_creds(new); in cred_alloc_blank()
242 struct cred *new; in prepare_creds() local
246 new = kmem_cache_alloc(cred_jar, GFP_KERNEL); in prepare_creds()
247 if (!new) in prepare_creds()
250 kdebug("prepare_creds() alloc %p", new); in prepare_creds()
253 memcpy(new, old, sizeof(struct cred)); in prepare_creds()
255 atomic_set(&new->usage, 1); in prepare_creds()
256 set_cred_subscribers(new, 0); in prepare_creds()
257 get_group_info(new->group_info); in prepare_creds()
258 get_uid(new->user); in prepare_creds()
259 get_user_ns(new->user_ns); in prepare_creds()
262 key_get(new->session_keyring); in prepare_creds()
263 key_get(new->process_keyring); in prepare_creds()
264 key_get(new->thread_keyring); in prepare_creds()
265 key_get(new->request_key_auth); in prepare_creds()
269 new->security = NULL; in prepare_creds()
272 if (security_prepare_creds(new, old, GFP_KERNEL) < 0) in prepare_creds()
274 validate_creds(new); in prepare_creds()
275 return new; in prepare_creds()
278 abort_creds(new); in prepare_creds()
289 struct cred *new; in prepare_exec_creds() local
291 new = prepare_creds(); in prepare_exec_creds()
292 if (!new) in prepare_exec_creds()
293 return new; in prepare_exec_creds()
297 key_put(new->thread_keyring); in prepare_exec_creds()
298 new->thread_keyring = NULL; in prepare_exec_creds()
301 key_put(new->process_keyring); in prepare_exec_creds()
302 new->process_keyring = NULL; in prepare_exec_creds()
305 return new; in prepare_exec_creds()
319 struct cred *new; in copy_creds() local
338 new = prepare_creds(); in copy_creds()
339 if (!new) in copy_creds()
343 ret = create_user_ns(new); in copy_creds()
351 if (new->thread_keyring) { in copy_creds()
352 key_put(new->thread_keyring); in copy_creds()
353 new->thread_keyring = NULL; in copy_creds()
355 install_thread_keyring_to_cred(new); in copy_creds()
362 key_put(new->process_keyring); in copy_creds()
363 new->process_keyring = NULL; in copy_creds()
367 atomic_inc(&new->user->processes); in copy_creds()
368 p->cred = p->real_cred = get_cred(new); in copy_creds()
369 alter_cred_subscribers(new, 2); in copy_creds()
370 validate_creds(new); in copy_creds()
374 put_cred(new); in copy_creds()
417 int commit_creds(struct cred *new) in commit_creds() argument
422 kdebug("commit_creds(%p{%d,%d})", new, in commit_creds()
423 atomic_read(&new->usage), in commit_creds()
424 read_cred_subscribers(new)); in commit_creds()
430 validate_creds(new); in commit_creds()
432 BUG_ON(atomic_read(&new->usage) < 1); in commit_creds()
434 get_cred(new); /* we will require a ref for the subj creds too */ in commit_creds()
437 if (!uid_eq(old->euid, new->euid) || in commit_creds()
438 !gid_eq(old->egid, new->egid) || in commit_creds()
439 !uid_eq(old->fsuid, new->fsuid) || in commit_creds()
440 !gid_eq(old->fsgid, new->fsgid) || in commit_creds()
441 !cred_cap_issubset(old, new)) { in commit_creds()
449 if (!uid_eq(new->fsuid, old->fsuid)) in commit_creds()
451 if (!gid_eq(new->fsgid, old->fsgid)) in commit_creds()
458 alter_cred_subscribers(new, 2); in commit_creds()
459 if (new->user != old->user) in commit_creds()
460 atomic_inc(&new->user->processes); in commit_creds()
461 rcu_assign_pointer(task->real_cred, new); in commit_creds()
462 rcu_assign_pointer(task->cred, new); in commit_creds()
463 if (new->user != old->user) in commit_creds()
468 if (!uid_eq(new->uid, old->uid) || in commit_creds()
469 !uid_eq(new->euid, old->euid) || in commit_creds()
470 !uid_eq(new->suid, old->suid) || in commit_creds()
471 !uid_eq(new->fsuid, old->fsuid)) in commit_creds()
474 if (!gid_eq(new->gid, old->gid) || in commit_creds()
475 !gid_eq(new->egid, old->egid) || in commit_creds()
476 !gid_eq(new->sgid, old->sgid) || in commit_creds()
477 !gid_eq(new->fsgid, old->fsgid)) in commit_creds()
494 void abort_creds(struct cred *new) in abort_creds() argument
496 kdebug("abort_creds(%p{%d,%d})", new, in abort_creds()
497 atomic_read(&new->usage), in abort_creds()
498 read_cred_subscribers(new)); in abort_creds()
501 BUG_ON(read_cred_subscribers(new) != 0); in abort_creds()
503 BUG_ON(atomic_read(&new->usage) < 1); in abort_creds()
504 put_cred(new); in abort_creds()
515 const struct cred *override_creds(const struct cred *new) in override_creds() argument
519 kdebug("override_creds(%p{%d,%d})", new, in override_creds()
520 atomic_read(&new->usage), in override_creds()
521 read_cred_subscribers(new)); in override_creds()
524 validate_creds(new); in override_creds()
525 get_cred(new); in override_creds()
526 alter_cred_subscribers(new, 1); in override_creds()
527 rcu_assign_pointer(current->cred, new); in override_creds()
592 struct cred *new; in prepare_kernel_cred() local
594 new = kmem_cache_alloc(cred_jar, GFP_KERNEL); in prepare_kernel_cred()
595 if (!new) in prepare_kernel_cred()
598 kdebug("prepare_kernel_cred() alloc %p", new); in prepare_kernel_cred()
607 *new = *old; in prepare_kernel_cred()
608 atomic_set(&new->usage, 1); in prepare_kernel_cred()
609 set_cred_subscribers(new, 0); in prepare_kernel_cred()
610 get_uid(new->user); in prepare_kernel_cred()
611 get_user_ns(new->user_ns); in prepare_kernel_cred()
612 get_group_info(new->group_info); in prepare_kernel_cred()
615 new->session_keyring = NULL; in prepare_kernel_cred()
616 new->process_keyring = NULL; in prepare_kernel_cred()
617 new->thread_keyring = NULL; in prepare_kernel_cred()
618 new->request_key_auth = NULL; in prepare_kernel_cred()
619 new->jit_keyring = KEY_REQKEY_DEFL_THREAD_KEYRING; in prepare_kernel_cred()
623 new->security = NULL; in prepare_kernel_cred()
625 if (security_prepare_creds(new, old, GFP_KERNEL) < 0) in prepare_kernel_cred()
629 validate_creds(new); in prepare_kernel_cred()
630 return new; in prepare_kernel_cred()
633 put_cred(new); in prepare_kernel_cred()
647 int set_security_override(struct cred *new, u32 secid) in set_security_override() argument
649 return security_kernel_act_as(new, secid); in set_security_override()
663 int set_security_override_from_ctx(struct cred *new, const char *secctx) in set_security_override_from_ctx() argument
672 return set_security_override(new, secid); in set_security_override_from_ctx()
685 int set_create_files_as(struct cred *new, struct inode *inode) in set_create_files_as() argument
687 new->fsuid = inode->i_uid; in set_create_files_as()
688 new->fsgid = inode->i_gid; in set_create_files_as()
689 return security_kernel_create_files_as(new, inode); in set_create_files_as()