Lines Matching refs:kls
414 static void __free_klistns_free(const struct klistns *kls) in __free_klistns_free() argument
416 if (kls->user_ns_id != LISTNS_CURRENT_USER) in __free_klistns_free()
417 put_user_ns(kls->user_ns); in __free_klistns_free()
418 if (kls->first_ns && kls->first_ns->ops) in __free_klistns_free()
419 kls->first_ns->ops->put(kls->first_ns); in __free_klistns_free()
450 static inline int prepare_klistns(struct klistns *kls, struct ns_id_req *kreq, in prepare_klistns() argument
453 kls->last_ns_id = kreq->ns_id; in prepare_klistns()
454 kls->user_ns_id = kreq->user_ns_id; in prepare_klistns()
455 kls->nr_ns_ids = nr_ns_ids; in prepare_klistns()
456 kls->ns_type = kreq->ns_type; in prepare_klistns()
457 kls->uns_ids = ns_ids; in prepare_klistns()
509 static inline bool __must_check ns_requested(const struct klistns *kls, in ns_requested() argument
512 return !kls->ns_type || (kls->ns_type & ns->ns_type); in ns_requested()
515 static inline bool __must_check may_list_ns(const struct klistns *kls, in may_list_ns() argument
518 if (kls->user_ns && kls->userns_capable) in may_list_ns()
533 static inline struct ns_common *__must_check legitimize_ns(const struct klistns *kls, in legitimize_ns() argument
538 if (!ns_requested(kls, candidate)) in legitimize_ns()
545 if (!may_list_ns(kls, ns)) in legitimize_ns()
551 static ssize_t do_listns_userns(struct klistns *kls) in do_listns_userns() argument
553 u64 __user *ns_ids = kls->uns_ids; in do_listns_userns()
554 size_t nr_ns_ids = kls->nr_ns_ids; in do_listns_userns()
559 VFS_WARN_ON_ONCE(!kls->user_ns_id); in do_listns_userns()
561 if (kls->user_ns_id == LISTNS_CURRENT_USER) in do_listns_userns()
563 else if (kls->user_ns_id) in do_listns_userns()
564 ns = lookup_ns_id(kls->user_ns_id, CLONE_NEWUSER); in do_listns_userns()
567 kls->user_ns = to_user_ns(ns); in do_listns_userns()
573 if (kls->last_ns_id) { in do_listns_userns()
574 kls->first_ns = lookup_ns_owner_at(kls->last_ns_id + 1, ns); in do_listns_userns()
575 if (!kls->first_ns) in do_listns_userns()
577 first_ns = kls->first_ns; in do_listns_userns()
581 head = &to_ns_common(kls->user_ns)->ns_owner_root.ns_list_head; in do_listns_userns()
582 kls->userns_capable = may_see_all_namespaces(); in do_listns_userns()
596 valid = legitimize_ns(kls, ns); in do_listns_userns()
695 static ssize_t do_listns(struct klistns *kls) in do_listns() argument
697 u64 __user *ns_ids = kls->uns_ids; in do_listns()
698 size_t nr_ns_ids = kls->nr_ns_ids; in do_listns()
705 if (hweight32(kls->ns_type) == 1) in do_listns()
706 ns_type = kls->ns_type; in do_listns()
716 if (kls->last_ns_id) { in do_listns()
717 kls->first_ns = lookup_ns_id_at(kls->last_ns_id + 1, ns_type); in do_listns()
718 if (!kls->first_ns) in do_listns()
720 first_ns = kls->first_ns; in do_listns()
738 valid = legitimize_ns(kls, ns); in do_listns()