• Home
  • Raw
  • Download

Lines Matching refs:ns

169 #define sem_ids(ns)	((ns)->ids[IPC_SEM_IDS])  argument
247 void sem_init_ns(struct ipc_namespace *ns) in sem_init_ns() argument
249 ns->sc_semmsl = SEMMSL; in sem_init_ns()
250 ns->sc_semmns = SEMMNS; in sem_init_ns()
251 ns->sc_semopm = SEMOPM; in sem_init_ns()
252 ns->sc_semmni = SEMMNI; in sem_init_ns()
253 ns->used_sems = 0; in sem_init_ns()
254 ipc_init_ids(&ns->ids[IPC_SEM_IDS]); in sem_init_ns()
258 void sem_exit_ns(struct ipc_namespace *ns) in sem_exit_ns() argument
260 free_ipcs(ns, &sem_ids(ns), freeary); in sem_exit_ns()
261 idr_destroy(&ns->ids[IPC_SEM_IDS].ipcs_idr); in sem_exit_ns()
262 rhashtable_destroy(&ns->ids[IPC_SEM_IDS].key_ht); in sem_exit_ns()
475 static inline struct sem_array *sem_obtain_object(struct ipc_namespace *ns, int id) in sem_obtain_object() argument
477 struct kern_ipc_perm *ipcp = ipc_obtain_object_idr(&sem_ids(ns), id); in sem_obtain_object()
485 static inline struct sem_array *sem_obtain_object_check(struct ipc_namespace *ns, in sem_obtain_object_check() argument
488 struct kern_ipc_perm *ipcp = ipc_obtain_object_check(&sem_ids(ns), id); in sem_obtain_object_check()
502 static inline void sem_rmid(struct ipc_namespace *ns, struct sem_array *s) in sem_rmid() argument
504 ipc_rmid(&sem_ids(ns), &s->sem_perm); in sem_rmid()
528 static int newary(struct ipc_namespace *ns, struct ipc_params *params) in newary() argument
539 if (ns->used_sems + nsems > ns->sc_semmns) in newary()
571 retval = ipc_addid(&sem_ids(ns), &sma->sem_perm, ns->sc_semmni); in newary()
576 ns->used_sems += nsems; in newary()
601 struct ipc_namespace *ns; in ksys_semget() local
609 ns = current->nsproxy->ipc_ns; in ksys_semget()
611 if (nsems < 0 || nsems > ns->sc_semmsl) in ksys_semget()
618 return ipcget(ns, &sem_ids(ns), &sem_ops, &sem_params); in ksys_semget()
1141 static void freeary(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp) in freeary() argument
1184 sem_rmid(ns, sma); in freeary()
1189 ns->used_sems -= sma->sem_nsems; in freeary()
1232 static int semctl_stat(struct ipc_namespace *ns, int semid, in semctl_stat() argument
1243 sma = sem_obtain_object(ns, semid); in semctl_stat()
1249 sma = sem_obtain_object_check(ns, semid); in semctl_stat()
1261 if (ipcperms(ns, &sma->sem_perm, S_IRUGO)) in semctl_stat()
1306 static int semctl_info(struct ipc_namespace *ns, int semid, in semctl_info() argument
1318 seminfo.semmni = ns->sc_semmni; in semctl_info()
1319 seminfo.semmns = ns->sc_semmns; in semctl_info()
1320 seminfo.semmsl = ns->sc_semmsl; in semctl_info()
1321 seminfo.semopm = ns->sc_semopm; in semctl_info()
1326 down_read(&sem_ids(ns).rwsem); in semctl_info()
1328 seminfo.semusz = sem_ids(ns).in_use; in semctl_info()
1329 seminfo.semaem = ns->used_sems; in semctl_info()
1334 max_idx = ipc_get_maxidx(&sem_ids(ns)); in semctl_info()
1335 up_read(&sem_ids(ns).rwsem); in semctl_info()
1341 static int semctl_setval(struct ipc_namespace *ns, int semid, int semnum, in semctl_setval() argument
1354 sma = sem_obtain_object_check(ns, semid); in semctl_setval()
1366 if (ipcperms(ns, &sma->sem_perm, S_IWUGO)) { in semctl_setval()
1403 static int semctl_main(struct ipc_namespace *ns, int semid, int semnum, in semctl_main() argument
1414 sma = sem_obtain_object_check(ns, semid); in semctl_main()
1423 if (ipcperms(ns, &sma->sem_perm, cmd == SETALL ? S_IWUGO : S_IRUGO)) in semctl_main()
1600 static int semctl_down(struct ipc_namespace *ns, int semid, in semctl_down() argument
1607 down_write(&sem_ids(ns).rwsem); in semctl_down()
1610 ipcp = ipcctl_obtain_check(ns, &sem_ids(ns), semid, cmd, in semctl_down()
1627 freeary(ns, ipcp); in semctl_down()
1646 up_write(&sem_ids(ns).rwsem); in semctl_down()
1652 struct ipc_namespace *ns; in ksys_semctl() local
1660 ns = current->nsproxy->ipc_ns; in ksys_semctl()
1665 return semctl_info(ns, semid, cmd, p); in ksys_semctl()
1669 err = semctl_stat(ns, semid, cmd, &semid64); in ksys_semctl()
1681 return semctl_main(ns, semid, semnum, cmd, p); in ksys_semctl()
1691 return semctl_setval(ns, semid, semnum, val); in ksys_semctl()
1698 return semctl_down(ns, semid, cmd, &semid64); in ksys_semctl()
1776 struct ipc_namespace *ns; in compat_ksys_semctl() local
1780 ns = current->nsproxy->ipc_ns; in compat_ksys_semctl()
1788 return semctl_info(ns, semid, cmd, p); in compat_ksys_semctl()
1792 err = semctl_stat(ns, semid, cmd, &semid64); in compat_ksys_semctl()
1804 return semctl_main(ns, semid, semnum, cmd, p); in compat_ksys_semctl()
1806 return semctl_setval(ns, semid, semnum, arg); in compat_ksys_semctl()
1812 return semctl_down(ns, semid, cmd, &semid64); in compat_ksys_semctl()
1905 static struct sem_undo *find_alloc_undo(struct ipc_namespace *ns, int semid) in find_alloc_undo() argument
1925 sma = sem_obtain_object_check(ns, semid); in find_alloc_undo()
1995 struct ipc_namespace *ns; in do_semtimedop() local
1997 ns = current->nsproxy->ipc_ns; in do_semtimedop()
2001 if (nsops > ns->sc_semopm) in do_semtimedop()
2048 un = find_alloc_undo(ns, semid); in do_semtimedop()
2058 sma = sem_obtain_object_check(ns, semid); in do_semtimedop()
2072 if (ipcperms(ns, &sma->sem_perm, alter ? S_IWUGO : S_IRUGO)) { in do_semtimedop()