Lines Matching refs:ns
143 #define sem_ids(ns) ((ns)->ids[IPC_SEM_IDS]) argument
173 void sem_init_ns(struct ipc_namespace *ns) in sem_init_ns() argument
175 ns->sc_semmsl = SEMMSL; in sem_init_ns()
176 ns->sc_semmns = SEMMNS; in sem_init_ns()
177 ns->sc_semopm = SEMOPM; in sem_init_ns()
178 ns->sc_semmni = SEMMNI; in sem_init_ns()
179 ns->used_sems = 0; in sem_init_ns()
180 ipc_init_ids(&ns->ids[IPC_SEM_IDS]); in sem_init_ns()
184 void sem_exit_ns(struct ipc_namespace *ns) in sem_exit_ns() argument
186 free_ipcs(ns, &sem_ids(ns), freeary); in sem_exit_ns()
187 idr_destroy(&ns->ids[IPC_SEM_IDS].ipcs_idr); in sem_exit_ns()
398 static inline struct sem_array *sem_obtain_lock(struct ipc_namespace *ns, in sem_obtain_lock() argument
404 ipcp = ipc_obtain_object(&sem_ids(ns), id); in sem_obtain_lock()
421 static inline struct sem_array *sem_obtain_object(struct ipc_namespace *ns, int id) in sem_obtain_object() argument
423 struct kern_ipc_perm *ipcp = ipc_obtain_object(&sem_ids(ns), id); in sem_obtain_object()
431 static inline struct sem_array *sem_obtain_object_check(struct ipc_namespace *ns, in sem_obtain_object_check() argument
434 struct kern_ipc_perm *ipcp = ipc_obtain_object_check(&sem_ids(ns), id); in sem_obtain_object_check()
448 static inline void sem_rmid(struct ipc_namespace *ns, struct sem_array *s) in sem_rmid() argument
450 ipc_rmid(&sem_ids(ns), &s->sem_perm); in sem_rmid()
494 static int newary(struct ipc_namespace *ns, struct ipc_params *params) in newary() argument
507 if (ns->used_sems + nsems > ns->sc_semmns) in newary()
542 id = ipc_addid(&sem_ids(ns), &sma->sem_perm, ns->sc_semmni); in newary()
547 ns->used_sems += nsems; in newary()
584 struct ipc_namespace *ns; in SYSCALL_DEFINE3() local
592 ns = current->nsproxy->ipc_ns; in SYSCALL_DEFINE3()
594 if (nsems < 0 || nsems > ns->sc_semmsl) in SYSCALL_DEFINE3()
601 return ipcget(ns, &sem_ids(ns), &sem_ops, &sem_params); in SYSCALL_DEFINE3()
1087 static void freeary(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp) in freeary() argument
1130 sem_rmid(ns, sma); in freeary()
1135 ns->used_sems -= sma->sem_nsems; in freeary()
1178 static int semctl_nolock(struct ipc_namespace *ns, int semid, in semctl_nolock() argument
1196 seminfo.semmni = ns->sc_semmni; in semctl_nolock()
1197 seminfo.semmns = ns->sc_semmns; in semctl_nolock()
1198 seminfo.semmsl = ns->sc_semmsl; in semctl_nolock()
1199 seminfo.semopm = ns->sc_semopm; in semctl_nolock()
1204 down_read(&sem_ids(ns).rwsem); in semctl_nolock()
1206 seminfo.semusz = sem_ids(ns).in_use; in semctl_nolock()
1207 seminfo.semaem = ns->used_sems; in semctl_nolock()
1212 max_id = ipc_get_maxid(&sem_ids(ns)); in semctl_nolock()
1213 up_read(&sem_ids(ns).rwsem); in semctl_nolock()
1228 sma = sem_obtain_object(ns, semid); in semctl_nolock()
1235 sma = sem_obtain_object_check(ns, semid); in semctl_nolock()
1243 if (ipcperms(ns, &sma->sem_perm, S_IRUGO)) in semctl_nolock()
1267 static int semctl_setval(struct ipc_namespace *ns, int semid, int semnum, in semctl_setval() argument
1290 sma = sem_obtain_object_check(ns, semid); in semctl_setval()
1302 if (ipcperms(ns, &sma->sem_perm, S_IWUGO)) { in semctl_setval()
1338 static int semctl_main(struct ipc_namespace *ns, int semid, int semnum, in semctl_main() argument
1351 sma = sem_obtain_object_check(ns, semid); in semctl_main()
1360 if (ipcperms(ns, &sma->sem_perm, cmd == SETALL ? S_IWUGO : S_IRUGO)) in semctl_main()
1531 static int semctl_down(struct ipc_namespace *ns, int semid, in semctl_down() argument
1544 down_write(&sem_ids(ns).rwsem); in semctl_down()
1547 ipcp = ipcctl_pre_down_nolock(ns, &sem_ids(ns), semid, cmd, in semctl_down()
1564 freeary(ns, ipcp); in semctl_down()
1583 up_write(&sem_ids(ns).rwsem); in semctl_down()
1590 struct ipc_namespace *ns; in SYSCALL_DEFINE4() local
1597 ns = current->nsproxy->ipc_ns; in SYSCALL_DEFINE4()
1604 return semctl_nolock(ns, semid, cmd, version, p); in SYSCALL_DEFINE4()
1611 return semctl_main(ns, semid, semnum, cmd, p); in SYSCALL_DEFINE4()
1613 return semctl_setval(ns, semid, semnum, arg); in SYSCALL_DEFINE4()
1616 return semctl_down(ns, semid, cmd, version, p); in SYSCALL_DEFINE4()
1688 static struct sem_undo *find_alloc_undo(struct ipc_namespace *ns, int semid) in find_alloc_undo() argument
1708 sma = sem_obtain_object_check(ns, semid); in find_alloc_undo()
1803 struct ipc_namespace *ns; in SYSCALL_DEFINE4() local
1806 ns = current->nsproxy->ipc_ns; in SYSCALL_DEFINE4()
1810 if (nsops > ns->sc_semopm) in SYSCALL_DEFINE4()
1848 un = find_alloc_undo(ns, semid); in SYSCALL_DEFINE4()
1858 sma = sem_obtain_object_check(ns, semid); in SYSCALL_DEFINE4()
1870 if (ipcperms(ns, &sma->sem_perm, alter ? S_IWUGO : S_IRUGO)) in SYSCALL_DEFINE4()
1979 sma = sem_obtain_lock(ns, semid, sops, nsops, &locknum); in SYSCALL_DEFINE4()