Lines Matching refs:ns
414 loff_t *pos, struct aa_ns *ns) in policy_update() argument
425 error = aa_may_manage_policy(label, ns, mask); in policy_update()
432 error = aa_replace_profiles(ns, label, mask, data); in policy_update()
445 struct aa_ns *ns = aa_get_ns(f->f_inode->i_private); in profile_load() local
446 int error = policy_update(AA_MAY_LOAD_POLICY, buf, size, pos, ns); in profile_load()
448 aa_put_ns(ns); in profile_load()
462 struct aa_ns *ns = aa_get_ns(f->f_inode->i_private); in profile_replace() local
464 buf, size, pos, ns); in profile_replace()
465 aa_put_ns(ns); in profile_replace()
482 struct aa_ns *ns = aa_get_ns(f->f_inode->i_private); in profile_remove() local
488 error = aa_may_manage_policy(label, ns, AA_MAY_REMOVE_POLICY); in profile_remove()
501 error = aa_remove_profiles(ns, label, data->data, size); in profile_remove()
506 aa_put_ns(ns); in profile_remove()
516 struct aa_ns *ns; member
526 aa_put_ns(rev->ns); in ns_revision_release()
541 mutex_lock_nested(&rev->ns->lock, rev->ns->level); in ns_revision_read()
543 if (last_read == rev->ns->revision) { in ns_revision_read()
544 mutex_unlock(&rev->ns->lock); in ns_revision_read()
547 if (wait_event_interruptible(rev->ns->wait, in ns_revision_read()
549 READ_ONCE(rev->ns->revision))) in ns_revision_read()
551 mutex_lock_nested(&rev->ns->lock, rev->ns->level); in ns_revision_read()
554 avail = sprintf(buffer, "%ld\n", rev->ns->revision); in ns_revision_read()
556 rev->last_read = rev->ns->revision; in ns_revision_read()
559 mutex_unlock(&rev->ns->lock); in ns_revision_read()
571 rev->ns = aa_get_ns(inode->i_private); in ns_revision_open()
572 if (!rev->ns) in ns_revision_open()
573 rev->ns = aa_get_current_ns(); in ns_revision_open()
585 mutex_lock_nested(&rev->ns->lock, rev->ns->level); in ns_revision_poll()
586 poll_wait(file, &rev->ns->wait, pt); in ns_revision_poll()
587 if (rev->last_read < rev->ns->revision) in ns_revision_poll()
589 mutex_unlock(&rev->ns->lock); in ns_revision_poll()
595 void __aa_bump_ns_revision(struct aa_ns *ns) in __aa_bump_ns_revision() argument
597 WRITE_ONCE(ns->revision, ns->revision + 1); in __aa_bump_ns_revision()
598 wake_up_interruptible(&ns->wait); in __aa_bump_ns_revision()
1170 if (profile->ns != labels_ns(label)) { in seq_ns_nsstacked_show()
1340 AA_BUG(rawdata->ns && !mutex_is_locked(&rawdata->ns->lock)); in __aa_fs_remove_rawdata()
1342 if (rawdata->ns) { in __aa_fs_remove_rawdata()
1345 aa_put_ns(rawdata->ns); in __aa_fs_remove_rawdata()
1346 rawdata->ns = NULL; in __aa_fs_remove_rawdata()
1350 int __aa_fs_create_rawdata(struct aa_ns *ns, struct aa_loaddata *rawdata) in __aa_fs_create_rawdata() argument
1354 AA_BUG(!ns); in __aa_fs_create_rawdata()
1356 AA_BUG(!mutex_is_locked(&ns->lock)); in __aa_fs_create_rawdata()
1357 AA_BUG(!ns_subdata_dir(ns)); in __aa_fs_create_rawdata()
1364 rawdata->name = kasprintf(GFP_KERNEL, "%ld", ns->revision); in __aa_fs_create_rawdata()
1368 dir = aafs_create_dir(rawdata->name, ns_subdata_dir(ns)); in __aa_fs_create_rawdata()
1401 rawdata->ns = aa_get_ns(ns); in __aa_fs_create_rawdata()
1402 list_add(&rawdata->list, &ns->rawdata_list); in __aa_fs_create_rawdata()
1606 id_len = snprintf(NULL, 0, ".%ld", profile->ns->uniq_id); in __aafs_profile_mkdir()
1615 sprintf(profile->dirname + len, ".%ld", profile->ns->uniq_id++); in __aafs_profile_mkdir()
1694 struct aa_ns *ns, *parent; in ns_mkdir_op() local
1723 ns = __aa_find_or_create_ns(parent, READ_ONCE(dentry->d_name.name), in ns_mkdir_op()
1725 if (IS_ERR(ns)) { in ns_mkdir_op()
1726 error = PTR_ERR(ns); in ns_mkdir_op()
1727 ns = NULL; in ns_mkdir_op()
1730 aa_put_ns(ns); /* list ref remains */ in ns_mkdir_op()
1743 struct aa_ns *ns, *parent; in ns_rmdir_op() local
1763 ns = aa_get_ns(__aa_findn_ns(&parent->sub_ns, dentry->d_name.name, in ns_rmdir_op()
1765 if (!ns) { in ns_rmdir_op()
1769 AA_BUG(ns_dir(ns) != dentry); in ns_rmdir_op()
1771 __aa_remove_ns(ns); in ns_rmdir_op()
1772 aa_put_ns(ns); in ns_rmdir_op()
1789 static void __aa_fs_list_remove_rawdata(struct aa_ns *ns) in __aa_fs_list_remove_rawdata() argument
1793 AA_BUG(!mutex_is_locked(&ns->lock)); in __aa_fs_list_remove_rawdata()
1795 list_for_each_entry_safe(ent, tmp, &ns->rawdata_list, list) in __aa_fs_list_remove_rawdata()
1803 void __aafs_ns_rmdir(struct aa_ns *ns) in __aafs_ns_rmdir() argument
1809 if (!ns) in __aafs_ns_rmdir()
1811 AA_BUG(!mutex_is_locked(&ns->lock)); in __aafs_ns_rmdir()
1813 list_for_each_entry(child, &ns->base.profiles, base.list) in __aafs_ns_rmdir()
1816 list_for_each_entry(sub, &ns->sub_ns, base.list) { in __aafs_ns_rmdir()
1822 __aa_fs_list_remove_rawdata(ns); in __aafs_ns_rmdir()
1824 if (ns_subns_dir(ns)) { in __aafs_ns_rmdir()
1825 sub = d_inode(ns_subns_dir(ns))->i_private; in __aafs_ns_rmdir()
1828 if (ns_subload(ns)) { in __aafs_ns_rmdir()
1829 sub = d_inode(ns_subload(ns))->i_private; in __aafs_ns_rmdir()
1832 if (ns_subreplace(ns)) { in __aafs_ns_rmdir()
1833 sub = d_inode(ns_subreplace(ns))->i_private; in __aafs_ns_rmdir()
1836 if (ns_subremove(ns)) { in __aafs_ns_rmdir()
1837 sub = d_inode(ns_subremove(ns))->i_private; in __aafs_ns_rmdir()
1840 if (ns_subrevision(ns)) { in __aafs_ns_rmdir()
1841 sub = d_inode(ns_subrevision(ns))->i_private; in __aafs_ns_rmdir()
1846 aafs_remove(ns->dents[i]); in __aafs_ns_rmdir()
1847 ns->dents[i] = NULL; in __aafs_ns_rmdir()
1852 static int __aafs_ns_mkdir_entries(struct aa_ns *ns, struct dentry *dir) in __aafs_ns_mkdir_entries() argument
1856 AA_BUG(!ns); in __aafs_ns_mkdir_entries()
1862 ns_subprofs_dir(ns) = dent; in __aafs_ns_mkdir_entries()
1867 ns_subdata_dir(ns) = dent; in __aafs_ns_mkdir_entries()
1869 dent = aafs_create_file("revision", 0444, dir, ns, in __aafs_ns_mkdir_entries()
1873 aa_get_ns(ns); in __aafs_ns_mkdir_entries()
1874 ns_subrevision(ns) = dent; in __aafs_ns_mkdir_entries()
1876 dent = aafs_create_file(".load", 0640, dir, ns, in __aafs_ns_mkdir_entries()
1880 aa_get_ns(ns); in __aafs_ns_mkdir_entries()
1881 ns_subload(ns) = dent; in __aafs_ns_mkdir_entries()
1883 dent = aafs_create_file(".replace", 0640, dir, ns, in __aafs_ns_mkdir_entries()
1887 aa_get_ns(ns); in __aafs_ns_mkdir_entries()
1888 ns_subreplace(ns) = dent; in __aafs_ns_mkdir_entries()
1890 dent = aafs_create_file(".remove", 0640, dir, ns, in __aafs_ns_mkdir_entries()
1894 aa_get_ns(ns); in __aafs_ns_mkdir_entries()
1895 ns_subremove(ns) = dent; in __aafs_ns_mkdir_entries()
1898 dent = aafs_create("namespaces", S_IFDIR | 0755, dir, ns, NULL, NULL, in __aafs_ns_mkdir_entries()
1902 aa_get_ns(ns); in __aafs_ns_mkdir_entries()
1903 ns_subns_dir(ns) = dent; in __aafs_ns_mkdir_entries()
1911 int __aafs_ns_mkdir(struct aa_ns *ns, struct dentry *parent, const char *name, in __aafs_ns_mkdir() argument
1919 AA_BUG(!ns); in __aafs_ns_mkdir()
1921 AA_BUG(!mutex_is_locked(&ns->lock)); in __aafs_ns_mkdir()
1924 name = ns->base.name; in __aafs_ns_mkdir()
1933 ns_dir(ns) = dir = dent; in __aafs_ns_mkdir()
1934 error = __aafs_ns_mkdir_entries(ns, dir); in __aafs_ns_mkdir()
1939 list_for_each_entry(child, &ns->base.profiles, base.list) { in __aafs_ns_mkdir()
1940 error = __aafs_profile_mkdir(child, ns_subprofs_dir(ns)); in __aafs_ns_mkdir()
1946 list_for_each_entry(sub, &ns->sub_ns, base.list) { in __aafs_ns_mkdir()
1948 error = __aafs_ns_mkdir(sub, ns_subns_dir(ns), NULL, NULL); in __aafs_ns_mkdir()
1960 __aafs_ns_rmdir(ns); in __aafs_ns_mkdir()
1977 static struct aa_ns *__next_ns(struct aa_ns *root, struct aa_ns *ns) in __next_ns() argument
1982 AA_BUG(!ns); in __next_ns()
1983 AA_BUG(ns != root && !mutex_is_locked(&ns->parent->lock)); in __next_ns()
1986 if (!list_empty(&ns->sub_ns)) { in __next_ns()
1987 next = list_first_entry(&ns->sub_ns, typeof(*ns), base.list); in __next_ns()
1993 parent = ns->parent; in __next_ns()
1994 while (ns != root) { in __next_ns()
1995 mutex_unlock(&ns->lock); in __next_ns()
1996 next = list_next_entry(ns, base.list); in __next_ns()
2001 ns = parent; in __next_ns()
2017 struct aa_ns *ns) in __first_profile() argument
2020 AA_BUG(ns && !mutex_is_locked(&ns->lock)); in __first_profile()
2022 for (; ns; ns = __next_ns(root, ns)) { in __first_profile()
2023 if (!list_empty(&ns->base.profiles)) in __first_profile()
2024 return list_first_entry(&ns->base.profiles, in __first_profile()
2042 struct aa_ns *ns = p->ns; in __next_profile() local
2053 mutex_is_locked(&p->ns->lock)); in __next_profile()
2060 mutex_is_locked(&parent->ns->lock)); in __next_profile()
2065 if (!list_entry_is_head(p, &ns->base.profiles, base.list)) in __next_profile()
2086 return __first_profile(root, __next_ns(root, profile->ns)); in next_profile()
2129 struct aa_ns *ns = f->private; in p_next() local
2132 return next_profile(ns, profile); in p_next()
2145 struct aa_ns *root = f->private, *ns; in p_stop() local
2148 for (ns = profile->ns; ns && ns != root; ns = ns->parent) in p_stop()
2149 mutex_unlock(&ns->lock); in p_stop()
2456 struct aa_ns *ns; in policy_get_link() local
2461 ns = aa_get_current_ns(); in policy_get_link()
2463 path.dentry = dget(ns_dir(ns)); in policy_get_link()
2465 aa_put_ns(ns); in policy_get_link()