Lines Matching refs:ipcp

174 	struct kern_ipc_perm *ipcp;  in ipc_findkey()  local
176 ipcp = rhashtable_lookup_fast(&ids->key_ht, &key, in ipc_findkey()
178 if (!ipcp) in ipc_findkey()
182 ipc_lock_object(ipcp); in ipc_findkey()
183 return ipcp; in ipc_findkey()
366 struct kern_ipc_perm *ipcp, in ipc_check_perms() argument
372 if (ipcperms(ns, ipcp, params->flg)) in ipc_check_perms()
375 err = ops->associate(ipcp, params->flg); in ipc_check_perms()
377 err = ipcp->id; in ipc_check_perms()
400 struct kern_ipc_perm *ipcp; in ipcget_public() local
409 ipcp = ipc_findkey(ids, params->key); in ipcget_public()
410 if (ipcp == NULL) { in ipcget_public()
424 err = ops->more_checks(ipcp, params); in ipcget_public()
430 err = ipc_check_perms(ns, ipcp, ops, params); in ipcget_public()
432 ipc_unlock(ipcp); in ipcget_public()
447 static void ipc_kht_remove(struct ipc_ids *ids, struct kern_ipc_perm *ipcp) in ipc_kht_remove() argument
449 if (ipcp->key != IPC_PRIVATE) in ipc_kht_remove()
450 WARN_ON_ONCE(rhashtable_remove_fast(&ids->key_ht, &ipcp->khtnode, in ipc_kht_remove()
497 void ipc_rmid(struct ipc_ids *ids, struct kern_ipc_perm *ipcp) in ipc_rmid() argument
499 int idx = ipcid_to_idx(ipcp->id); in ipc_rmid()
501 WARN_ON_ONCE(idr_remove(&ids->ipcs_idr, idx) != ipcp); in ipc_rmid()
502 ipc_kht_remove(ids, ipcp); in ipc_rmid()
504 ipcp->deleted = true; in ipc_rmid()
522 void ipc_set_key_private(struct ipc_ids *ids, struct kern_ipc_perm *ipcp) in ipc_set_key_private() argument
524 ipc_kht_remove(ids, ipcp); in ipc_set_key_private()
525 ipcp->key = IPC_PRIVATE; in ipc_set_key_private()
553 int ipcperms(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp, short flag) in ipcperms() argument
558 audit_ipc_obj(ipcp); in ipcperms()
560 granted_mode = ipcp->mode; in ipcperms()
561 if (uid_eq(euid, ipcp->cuid) || in ipcperms()
562 uid_eq(euid, ipcp->uid)) in ipcperms()
564 else if (in_group_p(ipcp->cgid) || in_group_p(ipcp->gid)) in ipcperms()
571 return security_ipc_permission(ipcp, flag); in ipcperms()
728 struct kern_ipc_perm *ipcp; in ipcctl_obtain_check() local
730 ipcp = ipc_obtain_object_check(ids, id); in ipcctl_obtain_check()
731 if (IS_ERR(ipcp)) { in ipcctl_obtain_check()
732 err = PTR_ERR(ipcp); in ipcctl_obtain_check()
736 audit_ipc_obj(ipcp); in ipcctl_obtain_check()
742 if (uid_eq(euid, ipcp->cuid) || uid_eq(euid, ipcp->uid) || in ipcctl_obtain_check()
744 return ipcp; /* successful lookup */ in ipcctl_obtain_check()