Lines Matching refs:ipcp

174 	struct kern_ipc_perm *ipcp;
176 ipcp = rhashtable_lookup_fast(&ids->key_ht, &key,
178 if (!ipcp)
182 ipc_lock_object(ipcp);
183 return ipcp;
353 * @ipcp: ipc permission set
363 * It is called with ipc_ids.rwsem and ipcp->lock held.
366 struct kern_ipc_perm *ipcp,
372 if (ipcperms(ns, ipcp, params->flg))
375 err = ops->associate(ipcp, params->flg);
377 err = ipcp->id;
400 struct kern_ipc_perm *ipcp;
409 ipcp = ipc_findkey(ids, params->key);
410 if (ipcp == NULL) {
424 err = ops->more_checks(ipcp, params);
430 err = ipc_check_perms(ns, ipcp, ops, params);
432 ipc_unlock(ipcp);
442 * @ipcp: ipc perm structure containing the key to remove
447 static void ipc_kht_remove(struct ipc_ids *ids, struct kern_ipc_perm *ipcp)
449 if (ipcp->key != IPC_PRIVATE)
450 WARN_ON_ONCE(rhashtable_remove_fast(&ids->key_ht, &ipcp->khtnode,
492 * @ipcp: ipc perm structure containing the identifier to remove
497 void ipc_rmid(struct ipc_ids *ids, struct kern_ipc_perm *ipcp)
499 int idx = ipcid_to_idx(ipcp->id);
501 WARN_ON_ONCE(idr_remove(&ids->ipcs_idr, idx) != ipcp);
502 ipc_kht_remove(ids, ipcp);
504 ipcp->deleted = true;
517 * @ipcp: ipc perm structure containing the key to modify
522 void ipc_set_key_private(struct ipc_ids *ids, struct kern_ipc_perm *ipcp)
524 ipc_kht_remove(ids, ipcp);
525 ipcp->key = IPC_PRIVATE;
545 * @ipcp: ipc permission set
553 int ipcperms(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp, short flag)
558 audit_ipc_obj(ipcp);
560 granted_mode = ipcp->mode;
561 if (uid_eq(euid, ipcp->cuid) ||
562 uid_eq(euid, ipcp->uid))
564 else if (in_group_p(ipcp->cgid) || in_group_p(ipcp->gid))
571 return security_ipc_permission(ipcp, flag);
728 struct kern_ipc_perm *ipcp;
730 ipcp = ipc_obtain_object_check(ids, id);
731 if (IS_ERR(ipcp)) {
732 err = PTR_ERR(ipcp);
736 audit_ipc_obj(ipcp);
742 if (uid_eq(euid, ipcp->cuid) || uid_eq(euid, ipcp->uid) ||
744 return ipcp; /* successful lookup */