Lines Matching full:ns
59 static struct ucounts *inc_time_namespaces(struct user_namespace *ns) in inc_time_namespaces() argument
61 return inc_ucount(ns, current_euid(), UCOUNT_TIME_NAMESPACES); in inc_time_namespaces()
81 struct time_namespace *ns; in clone_time_ns() local
91 ns = kmalloc(sizeof(*ns), GFP_KERNEL_ACCOUNT); in clone_time_ns()
92 if (!ns) in clone_time_ns()
95 refcount_set(&ns->ns.count, 1); in clone_time_ns()
97 ns->vvar_page = alloc_page(GFP_KERNEL_ACCOUNT | __GFP_ZERO); in clone_time_ns()
98 if (!ns->vvar_page) in clone_time_ns()
101 err = ns_alloc_inum(&ns->ns); in clone_time_ns()
105 ns->ucounts = ucounts; in clone_time_ns()
106 ns->ns.ops = &timens_operations; in clone_time_ns()
107 ns->user_ns = get_user_ns(user_ns); in clone_time_ns()
108 ns->offsets = old_ns->offsets; in clone_time_ns()
109 ns->frozen_offsets = false; in clone_time_ns()
110 return ns; in clone_time_ns()
113 __free_page(ns->vvar_page); in clone_time_ns()
115 kfree(ns); in clone_time_ns()
180 struct time_namespace *ns) in timens_setup_vdso_clock_data() argument
183 struct timens_offset monotonic = offset_from_ts(ns->offsets.monotonic); in timens_setup_vdso_clock_data()
184 struct timens_offset boottime = offset_from_ts(ns->offsets.boottime); in timens_setup_vdso_clock_data()
220 struct time_namespace *ns) in timens_set_vvar_page() argument
226 if (ns == &init_time_ns) in timens_set_vvar_page()
230 if (likely(ns->frozen_offsets)) in timens_set_vvar_page()
235 if (ns->frozen_offsets) in timens_set_vvar_page()
238 ns->frozen_offsets = true; in timens_set_vvar_page()
239 vdata = page_address(ns->vvar_page); in timens_set_vvar_page()
243 timens_setup_vdso_clock_data(&vc[i], ns); in timens_set_vvar_page()
249 void free_time_ns(struct time_namespace *ns) in free_time_ns() argument
251 dec_time_namespaces(ns->ucounts); in free_time_ns()
252 put_user_ns(ns->user_ns); in free_time_ns()
253 ns_free_inum(&ns->ns); in free_time_ns()
254 __free_page(ns->vvar_page); in free_time_ns()
255 kfree(ns); in free_time_ns()
258 static struct time_namespace *to_time_ns(struct ns_common *ns) in to_time_ns() argument
260 return container_of(ns, struct time_namespace, ns); in to_time_ns()
265 struct time_namespace *ns = NULL; in timens_get() local
271 ns = nsproxy->time_ns; in timens_get()
272 get_time_ns(ns); in timens_get()
276 return ns ? &ns->ns : NULL; in timens_get()
281 struct time_namespace *ns = NULL; in timens_for_children_get() local
287 ns = nsproxy->time_ns_for_children; in timens_for_children_get()
288 get_time_ns(ns); in timens_for_children_get()
292 return ns ? &ns->ns : NULL; in timens_for_children_get()
295 static void timens_put(struct ns_common *ns) in timens_put() argument
297 put_time_ns(to_time_ns(ns)); in timens_put()
300 void timens_commit(struct task_struct *tsk, struct time_namespace *ns) in timens_commit() argument
302 timens_set_vvar_page(tsk, ns); in timens_commit()
303 vdso_join_timens(tsk, ns); in timens_commit()
309 struct time_namespace *ns = to_time_ns(new); in timens_install() local
314 if (!ns_capable(ns->user_ns, CAP_SYS_ADMIN) || in timens_install()
318 get_time_ns(ns); in timens_install()
320 nsproxy->time_ns = ns; in timens_install()
322 get_time_ns(ns); in timens_install()
324 nsproxy->time_ns_for_children = ns; in timens_install()
330 struct ns_common *nsc = &nsproxy->time_ns_for_children->ns; in timens_on_fork()
331 struct time_namespace *ns = to_time_ns(nsc); in timens_on_fork() local
337 get_time_ns(ns); in timens_on_fork()
339 nsproxy->time_ns = ns; in timens_on_fork()
341 timens_commit(tsk, ns); in timens_on_fork()
344 static struct user_namespace *timens_owner(struct ns_common *ns) in timens_owner() argument
346 return to_time_ns(ns)->user_ns; in timens_owner()
369 struct ns_common *ns; in proc_timens_show_offsets() local
372 ns = timens_for_children_get(p); in proc_timens_show_offsets()
373 if (!ns) in proc_timens_show_offsets()
375 time_ns = to_time_ns(ns); in proc_timens_show_offsets()
385 struct ns_common *ns; in proc_timens_set_offset() local
390 ns = timens_for_children_get(p); in proc_timens_set_offset()
391 if (!ns) in proc_timens_set_offset()
393 time_ns = to_time_ns(ns); in proc_timens_set_offset()
482 .ns.count = REFCOUNT_INIT(3),
484 .ns.inum = PROC_TIME_INIT_INO,
485 .ns.ops = &timens_operations,