Lines Matching defs:ipcp
173 struct kern_ipc_perm *ipcp;
175 ipcp = rhashtable_lookup_fast(&ids->key_ht, &key, ipc_kht_params);
176 if (!ipcp) {
181 ipc_lock_object(ipcp);
182 return ipcp;
353 * @ipcp: ipc permission set
363 * It is called with ipc_ids.rwsem and ipcp->lock held.
365 static int ipc_check_perms(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp, const struct ipc_ops *ops,
370 if (ipcperms(ns, ipcp, params->flg)) {
373 err = ops->associate(ipcp, params->flg);
375 err = ipcp->id;
399 struct kern_ipc_perm *ipcp;
408 ipcp = ipc_findkey(ids, params->key);
409 if (ipcp == NULL) {
424 err = ops->more_checks(ipcp, params);
431 err = ipc_check_perms(ns, ipcp, ops, params);
434 ipc_unlock(ipcp);
444 * @ipcp: ipc perm structure containing the key to remove
449 static void ipc_kht_remove(struct ipc_ids *ids, struct kern_ipc_perm *ipcp)
451 if (ipcp->key != IPC_PRIVATE) {
452 WARN_ON_ONCE(rhashtable_remove_fast(&ids->key_ht, &ipcp->khtnode, ipc_kht_params));
459 * @ipcp: ipc perm structure containing the identifier to remove
464 void ipc_rmid(struct ipc_ids *ids, struct kern_ipc_perm *ipcp)
466 int idx = ipcid_to_idx(ipcp->id);
468 WARN_ON_ONCE(idr_remove(&ids->ipcs_idr, idx) != ipcp);
469 ipc_kht_remove(ids, ipcp);
471 ipcp->deleted = true;
487 * @ipcp: ipc perm structure containing the key to modify
492 void ipc_set_key_private(struct ipc_ids *ids, struct kern_ipc_perm *ipcp)
494 ipc_kht_remove(ids, ipcp);
495 ipcp->key = IPC_PRIVATE;
515 * @ipcp: ipc permission set
523 int ipcperms(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp, short flag)
528 audit_ipc_obj(ipcp);
530 granted_mode = ipcp->mode;
531 if (uid_eq(euid, ipcp->cuid) || uid_eq(euid, ipcp->uid)) {
533 } else if (in_group_p(ipcp->cgid) || in_group_p(ipcp->gid)) {
541 return security_ipc_permission(ipcp, flag);
700 struct kern_ipc_perm *ipcp;
702 ipcp = ipc_obtain_object_check(ids, id);
703 if (IS_ERR(ipcp)) {
704 err = PTR_ERR(ipcp);
708 audit_ipc_obj(ipcp);
714 if (uid_eq(euid, ipcp->cuid) || uid_eq(euid, ipcp->uid) || ns_capable(ns->user_ns, CAP_SYS_ADMIN)) {
715 return ipcp; /* successful lookup */