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()
444 struct aa_ns *ns = aa_get_ns(f->f_inode->i_private); in profile_load() local
445 int error = policy_update(AA_MAY_LOAD_POLICY, buf, size, pos, ns); in profile_load()
447 aa_put_ns(ns); in profile_load()
461 struct aa_ns *ns = aa_get_ns(f->f_inode->i_private); in profile_replace() local
463 buf, size, pos, ns); in profile_replace()
464 aa_put_ns(ns); in profile_replace()
481 struct aa_ns *ns = aa_get_ns(f->f_inode->i_private); in profile_remove() local
487 error = aa_may_manage_policy(label, ns, AA_MAY_REMOVE_POLICY); in profile_remove()
500 error = aa_remove_profiles(ns, label, data->data, size); in profile_remove()
505 aa_put_ns(ns); in profile_remove()
515 struct aa_ns *ns; member
525 aa_put_ns(rev->ns); in ns_revision_release()
540 mutex_lock_nested(&rev->ns->lock, rev->ns->level); in ns_revision_read()
542 if (last_read == rev->ns->revision) { in ns_revision_read()
543 mutex_unlock(&rev->ns->lock); in ns_revision_read()
546 if (wait_event_interruptible(rev->ns->wait, in ns_revision_read()
548 READ_ONCE(rev->ns->revision))) in ns_revision_read()
550 mutex_lock_nested(&rev->ns->lock, rev->ns->level); in ns_revision_read()
553 avail = sprintf(buffer, "%ld\n", rev->ns->revision); in ns_revision_read()
555 rev->last_read = rev->ns->revision; in ns_revision_read()
558 mutex_unlock(&rev->ns->lock); in ns_revision_read()
570 rev->ns = aa_get_ns(inode->i_private); in ns_revision_open()
571 if (!rev->ns) in ns_revision_open()
572 rev->ns = aa_get_current_ns(); in ns_revision_open()
584 mutex_lock_nested(&rev->ns->lock, rev->ns->level); in ns_revision_poll()
585 poll_wait(file, &rev->ns->wait, pt); in ns_revision_poll()
586 if (rev->last_read < rev->ns->revision) in ns_revision_poll()
588 mutex_unlock(&rev->ns->lock); in ns_revision_poll()
594 void __aa_bump_ns_revision(struct aa_ns *ns) in __aa_bump_ns_revision() argument
596 WRITE_ONCE(ns->revision, ns->revision + 1); in __aa_bump_ns_revision()
597 wake_up_interruptible(&ns->wait); in __aa_bump_ns_revision()
1167 if (profile->ns != labels_ns(label)) { in seq_ns_nsstacked_show()
1337 AA_BUG(rawdata->ns && !mutex_is_locked(&rawdata->ns->lock)); in __aa_fs_remove_rawdata()
1339 if (rawdata->ns) { in __aa_fs_remove_rawdata()
1342 aa_put_ns(rawdata->ns); in __aa_fs_remove_rawdata()
1343 rawdata->ns = NULL; in __aa_fs_remove_rawdata()
1347 int __aa_fs_create_rawdata(struct aa_ns *ns, struct aa_loaddata *rawdata) in __aa_fs_create_rawdata() argument
1351 AA_BUG(!ns); in __aa_fs_create_rawdata()
1353 AA_BUG(!mutex_is_locked(&ns->lock)); in __aa_fs_create_rawdata()
1354 AA_BUG(!ns_subdata_dir(ns)); in __aa_fs_create_rawdata()
1361 rawdata->name = kasprintf(GFP_KERNEL, "%ld", ns->revision); in __aa_fs_create_rawdata()
1365 dir = aafs_create_dir(rawdata->name, ns_subdata_dir(ns)); in __aa_fs_create_rawdata()
1398 rawdata->ns = aa_get_ns(ns); in __aa_fs_create_rawdata()
1399 list_add(&rawdata->list, &ns->rawdata_list); in __aa_fs_create_rawdata()
1603 id_len = snprintf(NULL, 0, ".%ld", profile->ns->uniq_id); in __aafs_profile_mkdir()
1612 sprintf(profile->dirname + len, ".%ld", profile->ns->uniq_id++); in __aafs_profile_mkdir()
1691 struct aa_ns *ns, *parent; in ns_mkdir_op() local
1720 ns = __aa_find_or_create_ns(parent, READ_ONCE(dentry->d_name.name), in ns_mkdir_op()
1722 if (IS_ERR(ns)) { in ns_mkdir_op()
1723 error = PTR_ERR(ns); in ns_mkdir_op()
1724 ns = NULL; in ns_mkdir_op()
1727 aa_put_ns(ns); /* list ref remains */ in ns_mkdir_op()
1740 struct aa_ns *ns, *parent; in ns_rmdir_op() local
1760 ns = aa_get_ns(__aa_findn_ns(&parent->sub_ns, dentry->d_name.name, in ns_rmdir_op()
1762 if (!ns) { in ns_rmdir_op()
1766 AA_BUG(ns_dir(ns) != dentry); in ns_rmdir_op()
1768 __aa_remove_ns(ns); in ns_rmdir_op()
1769 aa_put_ns(ns); in ns_rmdir_op()
1786 static void __aa_fs_list_remove_rawdata(struct aa_ns *ns) in __aa_fs_list_remove_rawdata() argument
1790 AA_BUG(!mutex_is_locked(&ns->lock)); in __aa_fs_list_remove_rawdata()
1792 list_for_each_entry_safe(ent, tmp, &ns->rawdata_list, list) in __aa_fs_list_remove_rawdata()
1800 void __aafs_ns_rmdir(struct aa_ns *ns) in __aafs_ns_rmdir() argument
1806 if (!ns) in __aafs_ns_rmdir()
1808 AA_BUG(!mutex_is_locked(&ns->lock)); in __aafs_ns_rmdir()
1810 list_for_each_entry(child, &ns->base.profiles, base.list) in __aafs_ns_rmdir()
1813 list_for_each_entry(sub, &ns->sub_ns, base.list) { in __aafs_ns_rmdir()
1819 __aa_fs_list_remove_rawdata(ns); in __aafs_ns_rmdir()
1821 if (ns_subns_dir(ns)) { in __aafs_ns_rmdir()
1822 sub = d_inode(ns_subns_dir(ns))->i_private; in __aafs_ns_rmdir()
1825 if (ns_subload(ns)) { in __aafs_ns_rmdir()
1826 sub = d_inode(ns_subload(ns))->i_private; in __aafs_ns_rmdir()
1829 if (ns_subreplace(ns)) { in __aafs_ns_rmdir()
1830 sub = d_inode(ns_subreplace(ns))->i_private; in __aafs_ns_rmdir()
1833 if (ns_subremove(ns)) { in __aafs_ns_rmdir()
1834 sub = d_inode(ns_subremove(ns))->i_private; in __aafs_ns_rmdir()
1837 if (ns_subrevision(ns)) { in __aafs_ns_rmdir()
1838 sub = d_inode(ns_subrevision(ns))->i_private; in __aafs_ns_rmdir()
1843 aafs_remove(ns->dents[i]); in __aafs_ns_rmdir()
1844 ns->dents[i] = NULL; in __aafs_ns_rmdir()
1849 static int __aafs_ns_mkdir_entries(struct aa_ns *ns, struct dentry *dir) in __aafs_ns_mkdir_entries() argument
1853 AA_BUG(!ns); in __aafs_ns_mkdir_entries()
1859 ns_subprofs_dir(ns) = dent; in __aafs_ns_mkdir_entries()
1864 ns_subdata_dir(ns) = dent; in __aafs_ns_mkdir_entries()
1866 dent = aafs_create_file("revision", 0444, dir, ns, in __aafs_ns_mkdir_entries()
1870 aa_get_ns(ns); in __aafs_ns_mkdir_entries()
1871 ns_subrevision(ns) = dent; in __aafs_ns_mkdir_entries()
1873 dent = aafs_create_file(".load", 0640, dir, ns, in __aafs_ns_mkdir_entries()
1877 aa_get_ns(ns); in __aafs_ns_mkdir_entries()
1878 ns_subload(ns) = dent; in __aafs_ns_mkdir_entries()
1880 dent = aafs_create_file(".replace", 0640, dir, ns, in __aafs_ns_mkdir_entries()
1884 aa_get_ns(ns); in __aafs_ns_mkdir_entries()
1885 ns_subreplace(ns) = dent; in __aafs_ns_mkdir_entries()
1887 dent = aafs_create_file(".remove", 0640, dir, ns, in __aafs_ns_mkdir_entries()
1891 aa_get_ns(ns); in __aafs_ns_mkdir_entries()
1892 ns_subremove(ns) = dent; in __aafs_ns_mkdir_entries()
1895 dent = aafs_create("namespaces", S_IFDIR | 0755, dir, ns, NULL, NULL, in __aafs_ns_mkdir_entries()
1899 aa_get_ns(ns); in __aafs_ns_mkdir_entries()
1900 ns_subns_dir(ns) = dent; in __aafs_ns_mkdir_entries()
1908 int __aafs_ns_mkdir(struct aa_ns *ns, struct dentry *parent, const char *name, in __aafs_ns_mkdir() argument
1916 AA_BUG(!ns); in __aafs_ns_mkdir()
1918 AA_BUG(!mutex_is_locked(&ns->lock)); in __aafs_ns_mkdir()
1921 name = ns->base.name; in __aafs_ns_mkdir()
1930 ns_dir(ns) = dir = dent; in __aafs_ns_mkdir()
1931 error = __aafs_ns_mkdir_entries(ns, dir); in __aafs_ns_mkdir()
1936 list_for_each_entry(child, &ns->base.profiles, base.list) { in __aafs_ns_mkdir()
1937 error = __aafs_profile_mkdir(child, ns_subprofs_dir(ns)); in __aafs_ns_mkdir()
1943 list_for_each_entry(sub, &ns->sub_ns, base.list) { in __aafs_ns_mkdir()
1945 error = __aafs_ns_mkdir(sub, ns_subns_dir(ns), NULL, NULL); in __aafs_ns_mkdir()
1957 __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()