/linux-4.1.27/ipc/ |
H A D | util.c | 293 * @ipcp: ipc permission set 303 * It is called with ipc_ids.rwsem and ipcp->lock held. 306 struct kern_ipc_perm *ipcp, ipc_check_perms() 312 if (ipcperms(ns, ipcp, params->flg)) ipc_check_perms() 315 err = ops->associate(ipcp, params->flg); ipc_check_perms() 317 err = ipcp->id; ipc_check_perms() 340 struct kern_ipc_perm *ipcp; ipcget_public() local 349 ipcp = ipc_findkey(ids, params->key); ipcget_public() 350 if (ipcp == NULL) { ipcget_public() 364 err = ops->more_checks(ipcp, params); ipcget_public() 370 err = ipc_check_perms(ns, ipcp, ops, params); ipcget_public() 372 ipc_unlock(ipcp); ipcget_public() 383 * @ipcp: ipc perm structure containing the identifier to remove 388 void ipc_rmid(struct ipc_ids *ids, struct kern_ipc_perm *ipcp) ipc_rmid() argument 390 int lid = ipcid_to_idx(ipcp->id); ipc_rmid() 394 ipcp->deleted = true; ipc_rmid() 479 * @ipcp: ipc permission set 487 int ipcperms(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp, short flag) ipcperms() argument 492 audit_ipc_obj(ipcp); ipcperms() 494 granted_mode = ipcp->mode; ipcperms() 495 if (uid_eq(euid, ipcp->cuid) || ipcperms() 496 uid_eq(euid, ipcp->uid)) ipcperms() 498 else if (in_group_p(ipcp->cgid) || in_group_p(ipcp->gid)) ipcperms() 505 return security_ipc_permission(ipcp, flag); ipcperms() 693 struct kern_ipc_perm *ipcp; ipcctl_pre_down_nolock() local 695 ipcp = ipc_obtain_object_check(ids, id); ipcctl_pre_down_nolock() 696 if (IS_ERR(ipcp)) { ipcctl_pre_down_nolock() 697 err = PTR_ERR(ipcp); ipcctl_pre_down_nolock() 701 audit_ipc_obj(ipcp); ipcctl_pre_down_nolock() 707 if (uid_eq(euid, ipcp->cuid) || uid_eq(euid, ipcp->uid) || ipcctl_pre_down_nolock() 709 return ipcp; /* successful lookup */ ipcctl_pre_down_nolock() 305 ipc_check_perms(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp, const struct ipc_ops *ops, struct ipc_params *params) ipc_check_perms() argument
|
H A D | shm.c | 89 static void do_shm_rmid(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp) do_shm_rmid() argument 92 shp = container_of(ipcp, struct shmid_kernel, shm_perm); do_shm_rmid() 132 struct kern_ipc_perm *ipcp = ipc_obtain_object(&shm_ids(ns), id); shm_obtain_object() local 134 if (IS_ERR(ipcp)) shm_obtain_object() 135 return ERR_CAST(ipcp); shm_obtain_object() 137 return container_of(ipcp, struct shmid_kernel, shm_perm); shm_obtain_object() 142 struct kern_ipc_perm *ipcp = ipc_obtain_object_check(&shm_ids(ns), id); shm_obtain_object_check() local 144 if (IS_ERR(ipcp)) shm_obtain_object_check() 145 return ERR_CAST(ipcp); shm_obtain_object_check() 147 return container_of(ipcp, struct shmid_kernel, shm_perm); shm_obtain_object_check() 156 struct kern_ipc_perm *ipcp = ipc_lock(&shm_ids(ns), id); shm_lock() local 163 if (IS_ERR(ipcp)) shm_lock() 164 return (void *)ipcp; shm_lock() 165 return container_of(ipcp, struct shmid_kernel, shm_perm); shm_lock() 168 static inline void shm_lock_by_ptr(struct shmid_kernel *ipcp) shm_lock_by_ptr() argument 171 ipc_lock_object(&ipcp->shm_perm); shm_lock_by_ptr() 302 struct kern_ipc_perm *ipcp = p; shm_try_destroy_orphaned() local 303 struct shmid_kernel *shp = container_of(ipcp, struct shmid_kernel, shm_perm); shm_try_destroy_orphaned() 627 * Called with shm_ids.rwsem and ipcp locked. 629 static inline int shm_security(struct kern_ipc_perm *ipcp, int shmflg) shm_security() argument 633 shp = container_of(ipcp, struct shmid_kernel, shm_perm); shm_security() 638 * Called with shm_ids.rwsem and ipcp locked. 640 static inline int shm_more_checks(struct kern_ipc_perm *ipcp, shm_more_checks() argument 645 shp = container_of(ipcp, struct shmid_kernel, shm_perm); shm_more_checks() 814 struct kern_ipc_perm *ipcp; shmctl_down() local 827 ipcp = ipcctl_pre_down_nolock(ns, &shm_ids(ns), shmid, cmd, shmctl_down() 829 if (IS_ERR(ipcp)) { shmctl_down() 830 err = PTR_ERR(ipcp); shmctl_down() 834 shp = container_of(ipcp, struct shmid_kernel, shm_perm); shmctl_down() 844 do_shm_rmid(ns, ipcp); shmctl_down() 848 err = ipc_update_perm(&shmid64.shm_perm, ipcp); shmctl_down()
|
H A D | msg.c | 79 struct kern_ipc_perm *ipcp = ipc_obtain_object(&msg_ids(ns), id); msq_obtain_object() local 81 if (IS_ERR(ipcp)) msq_obtain_object() 82 return ERR_CAST(ipcp); msq_obtain_object() 84 return container_of(ipcp, struct msg_queue, q_perm); msq_obtain_object() 90 struct kern_ipc_perm *ipcp = ipc_obtain_object_check(&msg_ids(ns), id); msq_obtain_object_check() local 92 if (IS_ERR(ipcp)) msq_obtain_object_check() 93 return ERR_CAST(ipcp); msq_obtain_object_check() 95 return container_of(ipcp, struct msg_queue, q_perm); msq_obtain_object_check() 212 static void freeque(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp) freeque() argument 215 struct msg_queue *msq = container_of(ipcp, struct msg_queue, q_perm); freeque() 232 * Called with msg_ids.rwsem and ipcp locked. 234 static inline int msg_security(struct kern_ipc_perm *ipcp, int msgflg) msg_security() argument 236 struct msg_queue *msq = container_of(ipcp, struct msg_queue, q_perm); msg_security() 342 struct kern_ipc_perm *ipcp; msgctl_down() local 355 ipcp = ipcctl_pre_down_nolock(ns, &msg_ids(ns), msqid, cmd, msgctl_down() 357 if (IS_ERR(ipcp)) { msgctl_down() 358 err = PTR_ERR(ipcp); msgctl_down() 362 msq = container_of(ipcp, struct msg_queue, q_perm); msgctl_down() 372 freeque(ns, ipcp); msgctl_down() 382 err = ipc_update_perm(&msqid64.msg_perm, ipcp); msgctl_down()
|
H A D | sem.c | 401 struct kern_ipc_perm *ipcp; sem_obtain_lock() local 404 ipcp = ipc_obtain_object(&sem_ids(ns), id); sem_obtain_lock() 405 if (IS_ERR(ipcp)) sem_obtain_lock() 406 return ERR_CAST(ipcp); sem_obtain_lock() 408 sma = container_of(ipcp, struct sem_array, sem_perm); sem_obtain_lock() 414 if (ipc_valid_object(ipcp)) sem_obtain_lock() 415 return container_of(ipcp, struct sem_array, sem_perm); sem_obtain_lock() 423 struct kern_ipc_perm *ipcp = ipc_obtain_object(&sem_ids(ns), id); sem_obtain_object() local 425 if (IS_ERR(ipcp)) sem_obtain_object() 426 return ERR_CAST(ipcp); sem_obtain_object() 428 return container_of(ipcp, struct sem_array, sem_perm); sem_obtain_object() 434 struct kern_ipc_perm *ipcp = ipc_obtain_object_check(&sem_ids(ns), id); sem_obtain_object_check() local 436 if (IS_ERR(ipcp)) sem_obtain_object_check() 437 return ERR_CAST(ipcp); sem_obtain_object_check() 439 return container_of(ipcp, struct sem_array, sem_perm); sem_obtain_object_check() 557 * Called with sem_ids.rwsem and ipcp locked. 559 static inline int sem_security(struct kern_ipc_perm *ipcp, int semflg) sem_security() argument 563 sma = container_of(ipcp, struct sem_array, sem_perm); sem_security() 568 * Called with sem_ids.rwsem and ipcp locked. 570 static inline int sem_more_checks(struct kern_ipc_perm *ipcp, sem_more_checks() argument 575 sma = container_of(ipcp, struct sem_array, sem_perm); sem_more_checks() 1087 static void freeary(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp) freeary() argument 1091 struct sem_array *sma = container_of(ipcp, struct sem_array, sem_perm); freeary() 1537 struct kern_ipc_perm *ipcp; semctl_down() local 1547 ipcp = ipcctl_pre_down_nolock(ns, &sem_ids(ns), semid, cmd, semctl_down() 1549 if (IS_ERR(ipcp)) { semctl_down() 1550 err = PTR_ERR(ipcp); semctl_down() 1554 sma = container_of(ipcp, struct sem_array, sem_perm); semctl_down() 1564 freeary(ns, ipcp); semctl_down() 1568 err = ipc_update_perm(&semid64.sem_perm, ipcp); semctl_down()
|
H A D | util.h | 114 /* must be called with ipcp locked */ 115 int ipcperms(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp, short flg); 163 static inline int ipc_checkid(struct kern_ipc_perm *ipcp, int uid) ipc_checkid() argument 165 return uid / SEQ_MULTIPLIER != ipcp->seq; ipc_checkid()
|
/linux-4.1.27/include/linux/ |
H A D | audit.h | 238 extern void __audit_ipc_obj(struct kern_ipc_perm *ipcp); 254 static inline void audit_ipc_obj(struct kern_ipc_perm *ipcp) audit_ipc_obj() argument 257 __audit_ipc_obj(ipcp); audit_ipc_obj() 395 static inline void audit_ipc_obj(struct kern_ipc_perm *ipcp) audit_ipc_obj() argument
|
H A D | security.h | 1148 * @ipcp contains the kernel IPC permission structure 1153 * @ipcp contains the kernel IPC permission structure. 1629 int (*ipc_permission) (struct kern_ipc_perm *ipcp, short flag); 1630 void (*ipc_getsecid) (struct kern_ipc_perm *ipcp, u32 *secid); 1906 int security_ipc_permission(struct kern_ipc_perm *ipcp, short flag); 1907 void security_ipc_getsecid(struct kern_ipc_perm *ipcp, u32 *secid); 2536 static inline int security_ipc_permission(struct kern_ipc_perm *ipcp, security_ipc_permission() argument 2542 static inline void security_ipc_getsecid(struct kern_ipc_perm *ipcp, u32 *secid) security_ipc_getsecid() argument
|
/linux-4.1.27/security/ |
H A D | security.c | 987 int security_ipc_permission(struct kern_ipc_perm *ipcp, short flag) security_ipc_permission() argument 989 return security_ops->ipc_permission(ipcp, flag); security_ipc_permission() 992 void security_ipc_getsecid(struct kern_ipc_perm *ipcp, u32 *secid) security_ipc_getsecid() argument 994 security_ops->ipc_getsecid(ipcp, secid); security_ipc_getsecid()
|
H A D | capability.c | 498 static int cap_ipc_permission(struct kern_ipc_perm *ipcp, short flag) cap_ipc_permission() argument 503 static void cap_ipc_getsecid(struct kern_ipc_perm *ipcp, u32 *secid) cap_ipc_getsecid() argument
|
/linux-4.1.27/kernel/ |
H A D | auditsc.c | 2118 * @ipcp: ipc permissions 2121 void __audit_ipc_obj(struct kern_ipc_perm *ipcp) __audit_ipc_obj() argument 2124 context->ipc.uid = ipcp->uid; __audit_ipc_obj() 2125 context->ipc.gid = ipcp->gid; __audit_ipc_obj() 2126 context->ipc.mode = ipcp->mode; __audit_ipc_obj() 2128 security_ipc_getsecid(ipcp, &context->ipc.osid); __audit_ipc_obj()
|
/linux-4.1.27/security/selinux/ |
H A D | hooks.c | 5518 static int selinux_ipc_permission(struct kern_ipc_perm *ipcp, short flag) selinux_ipc_permission() argument 5531 return ipc_has_perm(ipcp, av); selinux_ipc_permission() 5534 static void selinux_ipc_getsecid(struct kern_ipc_perm *ipcp, u32 *secid) selinux_ipc_getsecid() argument 5536 struct ipc_security_struct *isec = ipcp->security; selinux_ipc_getsecid()
|