• Home
  • Raw
  • Download

Lines Matching refs:ns

89 #define msg_ids(ns)	((ns)->ids[IPC_MSG_IDS])  argument
91 static inline struct msg_queue *msq_obtain_object(struct ipc_namespace *ns, int id) in msq_obtain_object() argument
93 struct kern_ipc_perm *ipcp = ipc_obtain_object_idr(&msg_ids(ns), id); in msq_obtain_object()
101 static inline struct msg_queue *msq_obtain_object_check(struct ipc_namespace *ns, in msq_obtain_object_check() argument
104 struct kern_ipc_perm *ipcp = ipc_obtain_object_check(&msg_ids(ns), id); in msq_obtain_object_check()
112 static inline void msg_rmid(struct ipc_namespace *ns, struct msg_queue *s) in msg_rmid() argument
114 ipc_rmid(&msg_ids(ns), &s->q_perm); in msg_rmid()
133 static int newque(struct ipc_namespace *ns, struct ipc_params *params) in newque() argument
157 msq->q_qbytes = ns->msg_ctlmnb; in newque()
164 retval = ipc_addid(&msg_ids(ns), &msq->q_perm, ns->msg_ctlmni); in newque()
253 static void freeque(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp) in freeque() argument
261 msg_rmid(ns, msq); in freeque()
267 atomic_dec(&ns->msg_hdrs); in freeque()
270 atomic_sub(msq->q_cbytes, &ns->msg_bytes); in freeque()
278 struct ipc_namespace *ns; in ksys_msgget() local
285 ns = current->nsproxy->ipc_ns; in ksys_msgget()
290 return ipcget(ns, &msg_ids(ns), &msg_ops, &msg_params); in ksys_msgget()
379 static int msgctl_down(struct ipc_namespace *ns, int msqid, int cmd, in msgctl_down() argument
386 down_write(&msg_ids(ns).rwsem); in msgctl_down()
389 ipcp = ipcctl_obtain_check(ns, &msg_ids(ns), msqid, cmd, in msgctl_down()
406 freeque(ns, ipcp); in msgctl_down()
412 if (msqid64->msg_qbytes > ns->msg_ctlmnb && in msgctl_down()
451 up_write(&msg_ids(ns).rwsem); in msgctl_down()
455 static int msgctl_info(struct ipc_namespace *ns, int msqid, in msgctl_info() argument
471 msginfo->msgmni = ns->msg_ctlmni; in msgctl_info()
472 msginfo->msgmax = ns->msg_ctlmax; in msgctl_info()
473 msginfo->msgmnb = ns->msg_ctlmnb; in msgctl_info()
476 down_read(&msg_ids(ns).rwsem); in msgctl_info()
478 msginfo->msgpool = msg_ids(ns).in_use; in msgctl_info()
479 msginfo->msgmap = atomic_read(&ns->msg_hdrs); in msgctl_info()
480 msginfo->msgtql = atomic_read(&ns->msg_bytes); in msgctl_info()
486 max_idx = ipc_get_maxidx(&msg_ids(ns)); in msgctl_info()
487 up_read(&msg_ids(ns).rwsem); in msgctl_info()
491 static int msgctl_stat(struct ipc_namespace *ns, int msqid, in msgctl_stat() argument
501 msq = msq_obtain_object(ns, msqid); in msgctl_stat()
507 msq = msq_obtain_object_check(ns, msqid); in msgctl_stat()
519 if (ipcperms(ns, &msq->q_perm, S_IRUGO)) in msgctl_stat()
572 struct ipc_namespace *ns; in ksys_msgctl() local
579 ns = current->nsproxy->ipc_ns; in ksys_msgctl()
585 err = msgctl_info(ns, msqid, cmd, &msginfo); in ksys_msgctl()
595 err = msgctl_stat(ns, msqid, cmd, &msqid64); in ksys_msgctl()
606 return msgctl_down(ns, msqid, cmd, &msqid64); in ksys_msgctl()
706 struct ipc_namespace *ns; in compat_ksys_msgctl() local
710 ns = current->nsproxy->ipc_ns; in compat_ksys_msgctl()
719 err = msgctl_info(ns, msqid, cmd, &msginfo); in compat_ksys_msgctl()
729 err = msgctl_stat(ns, msqid, cmd, &msqid64); in compat_ksys_msgctl()
740 return msgctl_down(ns, msqid, cmd, &msqid64); in compat_ksys_msgctl()
822 struct ipc_namespace *ns; in do_msgsnd() local
825 ns = current->nsproxy->ipc_ns; in do_msgsnd()
827 if (msgsz > ns->msg_ctlmax || (long) msgsz < 0 || msqid < 0) in do_msgsnd()
840 msq = msq_obtain_object_check(ns, msqid); in do_msgsnd()
852 if (ipcperms(ns, &msq->q_perm, S_IWUGO)) in do_msgsnd()
912 atomic_add(msgsz, &ns->msg_bytes); in do_msgsnd()
913 atomic_inc(&ns->msg_hdrs); in do_msgsnd()
1071 struct ipc_namespace *ns; in do_msgrcv() local
1075 ns = current->nsproxy->ipc_ns; in do_msgrcv()
1083 copy = prepare_copy(buf, min_t(size_t, bufsz, ns->msg_ctlmax)); in do_msgrcv()
1090 msq = msq_obtain_object_check(ns, msqid); in do_msgrcv()
1101 if (ipcperms(ns, &msq->q_perm, S_IRUGO)) in do_msgrcv()
1136 atomic_sub(msg->m_ts, &ns->msg_bytes); in do_msgrcv()
1137 atomic_dec(&ns->msg_hdrs); in do_msgrcv()
1266 void msg_init_ns(struct ipc_namespace *ns) in msg_init_ns() argument
1268 ns->msg_ctlmax = MSGMAX; in msg_init_ns()
1269 ns->msg_ctlmnb = MSGMNB; in msg_init_ns()
1270 ns->msg_ctlmni = MSGMNI; in msg_init_ns()
1272 atomic_set(&ns->msg_bytes, 0); in msg_init_ns()
1273 atomic_set(&ns->msg_hdrs, 0); in msg_init_ns()
1274 ipc_init_ids(&ns->ids[IPC_MSG_IDS]); in msg_init_ns()
1278 void msg_exit_ns(struct ipc_namespace *ns) in msg_exit_ns() argument
1280 free_ipcs(ns, &msg_ids(ns), freeque); in msg_exit_ns()
1281 idr_destroy(&ns->ids[IPC_MSG_IDS].ipcs_idr); in msg_exit_ns()
1282 rhashtable_destroy(&ns->ids[IPC_MSG_IDS].key_ht); in msg_exit_ns()