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_data() argument
183 struct timens_offset monotonic = offset_from_ts(ns->offsets.monotonic); in timens_setup_vdso_data()
184 struct timens_offset boottime = offset_from_ts(ns->offsets.boottime); in timens_setup_vdso_data()
220 struct time_namespace *ns) in timens_set_vvar_page() argument
225 if (ns == &init_time_ns) in timens_set_vvar_page()
229 if (likely(ns->frozen_offsets)) in timens_set_vvar_page()
234 if (ns->frozen_offsets) in timens_set_vvar_page()
237 ns->frozen_offsets = true; in timens_set_vvar_page()
238 vdata = arch_get_vdso_data(page_address(ns->vvar_page)); in timens_set_vvar_page()
241 timens_setup_vdso_data(&vdata[i], ns); in timens_set_vvar_page()
247 void free_time_ns(struct time_namespace *ns) in free_time_ns() argument
249 dec_time_namespaces(ns->ucounts); in free_time_ns()
250 put_user_ns(ns->user_ns); in free_time_ns()
251 ns_free_inum(&ns->ns); in free_time_ns()
252 __free_page(ns->vvar_page); in free_time_ns()
253 kfree(ns); in free_time_ns()
256 static struct time_namespace *to_time_ns(struct ns_common *ns) in to_time_ns() argument
258 return container_of(ns, struct time_namespace, ns); in to_time_ns()
263 struct time_namespace *ns = NULL; in timens_get() local
269 ns = nsproxy->time_ns; in timens_get()
270 get_time_ns(ns); in timens_get()
274 return ns ? &ns->ns : NULL; in timens_get()
279 struct time_namespace *ns = NULL; in timens_for_children_get() local
285 ns = nsproxy->time_ns_for_children; in timens_for_children_get()
286 get_time_ns(ns); in timens_for_children_get()
290 return ns ? &ns->ns : NULL; in timens_for_children_get()
293 static void timens_put(struct ns_common *ns) in timens_put() argument
295 put_time_ns(to_time_ns(ns)); in timens_put()
298 void timens_commit(struct task_struct *tsk, struct time_namespace *ns) in timens_commit() argument
300 timens_set_vvar_page(tsk, ns); in timens_commit()
301 vdso_join_timens(tsk, ns); in timens_commit()
307 struct time_namespace *ns = to_time_ns(new); in timens_install() local
312 if (!ns_capable(ns->user_ns, CAP_SYS_ADMIN) || in timens_install()
316 get_time_ns(ns); in timens_install()
318 nsproxy->time_ns = ns; in timens_install()
320 get_time_ns(ns); in timens_install()
322 nsproxy->time_ns_for_children = ns; in timens_install()
328 struct ns_common *nsc = &nsproxy->time_ns_for_children->ns; in timens_on_fork()
329 struct time_namespace *ns = to_time_ns(nsc); in timens_on_fork() local
335 get_time_ns(ns); in timens_on_fork()
337 nsproxy->time_ns = ns; in timens_on_fork()
339 timens_commit(tsk, ns); in timens_on_fork()
342 static struct user_namespace *timens_owner(struct ns_common *ns) in timens_owner() argument
344 return to_time_ns(ns)->user_ns; in timens_owner()
367 struct ns_common *ns; in proc_timens_show_offsets() local
370 ns = timens_for_children_get(p); in proc_timens_show_offsets()
371 if (!ns) in proc_timens_show_offsets()
373 time_ns = to_time_ns(ns); in proc_timens_show_offsets()
383 struct ns_common *ns; in proc_timens_set_offset() local
388 ns = timens_for_children_get(p); in proc_timens_set_offset()
389 if (!ns) in proc_timens_set_offset()
391 time_ns = to_time_ns(ns); in proc_timens_set_offset()
480 .ns.count = REFCOUNT_INIT(3),
482 .ns.inum = PROC_TIME_INIT_INO,
483 .ns.ops = &timens_operations,