Lines Matching refs:ipcp

173 	struct kern_ipc_perm *ipcp;  in ipc_findkey()  local
175 ipcp = rhashtable_lookup_fast(&ids->key_ht, &key, in ipc_findkey()
177 if (!ipcp) in ipc_findkey()
181 ipc_lock_object(ipcp); in ipc_findkey()
182 return ipcp; in ipc_findkey()
365 struct kern_ipc_perm *ipcp, in ipc_check_perms() argument
371 if (ipcperms(ns, ipcp, params->flg)) in ipc_check_perms()
374 err = ops->associate(ipcp, params->flg); in ipc_check_perms()
376 err = ipcp->id; in ipc_check_perms()
399 struct kern_ipc_perm *ipcp; in ipcget_public() local
408 ipcp = ipc_findkey(ids, params->key); in ipcget_public()
409 if (ipcp == NULL) { in ipcget_public()
423 err = ops->more_checks(ipcp, params); in ipcget_public()
429 err = ipc_check_perms(ns, ipcp, ops, params); in ipcget_public()
431 ipc_unlock(ipcp); in ipcget_public()
446 static void ipc_kht_remove(struct ipc_ids *ids, struct kern_ipc_perm *ipcp) in ipc_kht_remove() argument
448 if (ipcp->key != IPC_PRIVATE) in ipc_kht_remove()
449 WARN_ON_ONCE(rhashtable_remove_fast(&ids->key_ht, &ipcp->khtnode, in ipc_kht_remove()
461 void ipc_rmid(struct ipc_ids *ids, struct kern_ipc_perm *ipcp) in ipc_rmid() argument
463 int idx = ipcid_to_idx(ipcp->id); in ipc_rmid()
465 WARN_ON_ONCE(idr_remove(&ids->ipcs_idr, idx) != ipcp); in ipc_rmid()
466 ipc_kht_remove(ids, ipcp); in ipc_rmid()
468 ipcp->deleted = true; in ipc_rmid()
488 void ipc_set_key_private(struct ipc_ids *ids, struct kern_ipc_perm *ipcp) in ipc_set_key_private() argument
490 ipc_kht_remove(ids, ipcp); in ipc_set_key_private()
491 ipcp->key = IPC_PRIVATE; in ipc_set_key_private()
519 int ipcperms(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp, short flag) in ipcperms() argument
524 audit_ipc_obj(ipcp); in ipcperms()
526 granted_mode = ipcp->mode; in ipcperms()
527 if (uid_eq(euid, ipcp->cuid) || in ipcperms()
528 uid_eq(euid, ipcp->uid)) in ipcperms()
530 else if (in_group_p(ipcp->cgid) || in_group_p(ipcp->gid)) in ipcperms()
537 return security_ipc_permission(ipcp, flag); in ipcperms()
694 struct kern_ipc_perm *ipcp; in ipcctl_obtain_check() local
696 ipcp = ipc_obtain_object_check(ids, id); in ipcctl_obtain_check()
697 if (IS_ERR(ipcp)) { in ipcctl_obtain_check()
698 err = PTR_ERR(ipcp); in ipcctl_obtain_check()
702 audit_ipc_obj(ipcp); in ipcctl_obtain_check()
708 if (uid_eq(euid, ipcp->cuid) || uid_eq(euid, ipcp->uid) || in ipcctl_obtain_check()
710 return ipcp; /* successful lookup */ in ipcctl_obtain_check()