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) { in may_list_ns()
519 if (kls->userns_capable) in may_list_ns()
554 static inline struct ns_common *__must_check legitimize_ns(const struct klistns *kls, in legitimize_ns() argument
559 if (!ns_requested(kls, candidate)) in legitimize_ns()
566 if (!may_list_ns(kls, ns)) in legitimize_ns()
572 static ssize_t do_listns_userns(struct klistns *kls) in do_listns_userns() argument
574 u64 __user *ns_ids = kls->uns_ids; in do_listns_userns()
575 size_t nr_ns_ids = kls->nr_ns_ids; in do_listns_userns()
580 VFS_WARN_ON_ONCE(!kls->user_ns_id); in do_listns_userns()
582 if (kls->user_ns_id == LISTNS_CURRENT_USER) in do_listns_userns()
584 else if (kls->user_ns_id) in do_listns_userns()
585 ns = lookup_ns_id(kls->user_ns_id, CLONE_NEWUSER); in do_listns_userns()
588 kls->user_ns = to_user_ns(ns); in do_listns_userns()
594 if (kls->last_ns_id) { in do_listns_userns()
595 kls->first_ns = lookup_ns_owner_at(kls->last_ns_id + 1, ns); in do_listns_userns()
596 if (!kls->first_ns) in do_listns_userns()
598 first_ns = kls->first_ns; in do_listns_userns()
602 head = &to_ns_common(kls->user_ns)->ns_owner_root.ns_list_head; in do_listns_userns()
603 kls->userns_capable = ns_capable_noaudit(kls->user_ns, CAP_SYS_ADMIN); in do_listns_userns()
617 valid = legitimize_ns(kls, ns); in do_listns_userns()
716 static ssize_t do_listns(struct klistns *kls) in do_listns() argument
718 u64 __user *ns_ids = kls->uns_ids; in do_listns()
719 size_t nr_ns_ids = kls->nr_ns_ids; in do_listns()
726 if (hweight32(kls->ns_type) == 1) in do_listns()
727 ns_type = kls->ns_type; in do_listns()
737 if (kls->last_ns_id) { in do_listns()
738 kls->first_ns = lookup_ns_id_at(kls->last_ns_id + 1, ns_type); in do_listns()
739 if (!kls->first_ns) in do_listns()
741 first_ns = kls->first_ns; in do_listns()
759 valid = legitimize_ns(kls, ns); in do_listns()