Lines Matching refs:ipcp

173 	struct kern_ipc_perm *ipcp;
175 ipcp = rhashtable_lookup_fast(&ids->key_ht, &key,
177 if (!ipcp)
181 ipc_lock_object(ipcp);
182 return ipcp;
352 * @ipcp: ipc permission set
362 * It is called with ipc_ids.rwsem and ipcp->lock held.
365 struct kern_ipc_perm *ipcp,
371 if (ipcperms(ns, ipcp, params->flg))
374 err = ops->associate(ipcp, params->flg);
376 err = ipcp->id;
399 struct kern_ipc_perm *ipcp;
408 ipcp = ipc_findkey(ids, params->key);
409 if (ipcp == NULL) {
423 err = ops->more_checks(ipcp, params);
429 err = ipc_check_perms(ns, ipcp, ops, params);
431 ipc_unlock(ipcp);
441 * @ipcp: ipc perm structure containing the key to remove
446 static void ipc_kht_remove(struct ipc_ids *ids, struct kern_ipc_perm *ipcp)
448 if (ipcp->key != IPC_PRIVATE)
449 WARN_ON_ONCE(rhashtable_remove_fast(&ids->key_ht, &ipcp->khtnode,
456 * @ipcp: ipc perm structure containing the identifier to remove
461 void ipc_rmid(struct ipc_ids *ids, struct kern_ipc_perm *ipcp)
463 int idx = ipcid_to_idx(ipcp->id);
465 WARN_ON_ONCE(idr_remove(&ids->ipcs_idr, idx) != ipcp);
466 ipc_kht_remove(ids, ipcp);
468 ipcp->deleted = true;
483 * @ipcp: ipc perm structure containing the key to modify
488 void ipc_set_key_private(struct ipc_ids *ids, struct kern_ipc_perm *ipcp)
490 ipc_kht_remove(ids, ipcp);
491 ipcp->key = IPC_PRIVATE;
511 * @ipcp: ipc permission set
519 int ipcperms(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp, short flag)
524 audit_ipc_obj(ipcp);
526 granted_mode = ipcp->mode;
527 if (uid_eq(euid, ipcp->cuid) ||
528 uid_eq(euid, ipcp->uid))
530 else if (in_group_p(ipcp->cgid) || in_group_p(ipcp->gid))
537 return security_ipc_permission(ipcp, flag);
694 struct kern_ipc_perm *ipcp;
696 ipcp = ipc_obtain_object_check(ids, id);
697 if (IS_ERR(ipcp)) {
698 err = PTR_ERR(ipcp);
702 audit_ipc_obj(ipcp);
708 if (uid_eq(euid, ipcp->cuid) || uid_eq(euid, ipcp->uid) ||
710 return ipcp; /* successful lookup */