Lines Matching full:profile

102  * mangle_name - mangle a profile name to std profile layout form
103 * @name: profile name to mangle (NOT NULL)
612 static void profile_query_cb(struct aa_profile *profile, struct aa_perms *perms, in profile_query_cb() argument
615 struct aa_ruleset *rules = list_first_entry(&profile->rules, in profile_query_cb()
620 if (profile_unconfined(profile)) in profile_query_cb()
640 aa_apply_modes_to_perms(profile, &tmp); in profile_query_cb()
670 struct aa_profile *profile; in query_data() local
705 label_for_each_confined(i, label, profile) { in query_data()
706 if (!profile->data) in query_data()
709 data = rhashtable_lookup_fast(profile->data, &key, in query_data()
710 profile->data->p); in query_data()
759 struct aa_profile *profile; in query_label() local
776 * profile name and dfa string. profile_name_len is greater in query_label()
791 label_for_each_in_ns(i, labels_ns(label), label, profile) { in query_label()
792 profile_query_cb(profile, &perms, match_str, match_len); in query_label()
795 label_for_each(i, label, profile) { in query_label()
796 profile_query_cb(profile, &perms, match_str, match_len); in query_label()
909 #define QUERY_CMD_PROFILE "profile\0"
928 * profile query specific format described in the query_label() function
1030 * profile based file operations
1074 struct aa_profile *profile = labels_profile(label); in seq_profile_name_show() local
1075 seq_printf(seq, "%s\n", profile->base.name); in seq_profile_name_show()
1085 struct aa_profile *profile = labels_profile(label); in seq_profile_mode_show() local
1086 seq_printf(seq, "%s\n", aa_profile_mode_names[profile->mode]); in seq_profile_mode_show()
1096 struct aa_profile *profile = labels_profile(label); in seq_profile_attach_show() local
1097 if (profile->attach.xmatch_str) in seq_profile_attach_show()
1098 seq_printf(seq, "%s\n", profile->attach.xmatch_str); in seq_profile_attach_show()
1099 else if (profile->attach.xmatch.dfa) in seq_profile_attach_show()
1102 seq_printf(seq, "%s\n", profile->base.name); in seq_profile_attach_show()
1112 struct aa_profile *profile = labels_profile(label); in seq_profile_hash_show() local
1115 if (profile->hash) { in seq_profile_hash_show()
1117 seq_printf(seq, "%.2x", profile->hash[i]); in seq_profile_hash_show()
1164 struct aa_profile *profile; in seq_ns_nsstacked_show() local
1171 label_for_each(it, label, profile) in seq_ns_nsstacked_show()
1172 if (profile->ns != labels_ns(label)) { in seq_ns_nsstacked_show()
1514 /** fns to setup dynamic per profile/namespace files **/
1518 * Requires: @profile->ns->lock held
1520 void __aafs_profile_rmdir(struct aa_profile *profile) in __aafs_profile_rmdir() argument
1525 if (!profile) in __aafs_profile_rmdir()
1528 list_for_each_entry(child, &profile->base.profiles, base.list) in __aafs_profile_rmdir()
1533 if (!profile->dents[i]) in __aafs_profile_rmdir()
1536 proxy = d_inode(profile->dents[i])->i_private; in __aafs_profile_rmdir()
1537 aafs_remove(profile->dents[i]); in __aafs_profile_rmdir()
1539 profile->dents[i] = NULL; in __aafs_profile_rmdir()
1568 struct aa_profile *profile, in create_profile_file() argument
1571 struct aa_proxy *proxy = aa_get_proxy(profile->label.proxy); in create_profile_file()
1582 static int profile_depth(struct aa_profile *profile) in profile_depth() argument
1587 for (depth = 0; profile; profile = rcu_access_pointer(profile->parent)) in profile_depth()
1631 struct aa_profile *profile; in rawdata_get_link_base() local
1639 profile = labels_profile(label); in rawdata_get_link_base()
1640 depth = profile_depth(profile); in rawdata_get_link_base()
1641 target = gen_symlink_name(depth, profile->rawdata->name, name); in rawdata_get_link_base()
1686 * Requires: @profile->ns->lock held
1688 int __aafs_profile_mkdir(struct aa_profile *profile, struct dentry *parent) in __aafs_profile_mkdir() argument
1694 AA_BUG(!profile); in __aafs_profile_mkdir()
1695 AA_BUG(!mutex_is_locked(&profiles_ns(profile)->lock)); in __aafs_profile_mkdir()
1699 p = aa_deref_parent(profile); in __aafs_profile_mkdir()
1712 if (!profile->dirname) { in __aafs_profile_mkdir()
1714 len = mangle_name(profile->base.name, NULL); in __aafs_profile_mkdir()
1715 id_len = snprintf(NULL, 0, ".%ld", profile->ns->uniq_id); in __aafs_profile_mkdir()
1717 profile->dirname = kmalloc(len + id_len + 1, GFP_KERNEL); in __aafs_profile_mkdir()
1718 if (!profile->dirname) { in __aafs_profile_mkdir()
1723 mangle_name(profile->base.name, profile->dirname); in __aafs_profile_mkdir()
1724 sprintf(profile->dirname + len, ".%ld", profile->ns->uniq_id++); in __aafs_profile_mkdir()
1727 dent = aafs_create_dir(profile->dirname, parent); in __aafs_profile_mkdir()
1730 prof_dir(profile) = dir = dent; in __aafs_profile_mkdir()
1732 dent = create_profile_file(dir, "name", profile, in __aafs_profile_mkdir()
1736 profile->dents[AAFS_PROF_NAME] = dent; in __aafs_profile_mkdir()
1738 dent = create_profile_file(dir, "mode", profile, in __aafs_profile_mkdir()
1742 profile->dents[AAFS_PROF_MODE] = dent; in __aafs_profile_mkdir()
1744 dent = create_profile_file(dir, "attach", profile, in __aafs_profile_mkdir()
1748 profile->dents[AAFS_PROF_ATTACH] = dent; in __aafs_profile_mkdir()
1750 if (profile->hash) { in __aafs_profile_mkdir()
1751 dent = create_profile_file(dir, "sha1", profile, in __aafs_profile_mkdir()
1755 profile->dents[AAFS_PROF_HASH] = dent; in __aafs_profile_mkdir()
1759 if (profile->rawdata) { in __aafs_profile_mkdir()
1762 profile->label.proxy, NULL, NULL, in __aafs_profile_mkdir()
1766 aa_get_proxy(profile->label.proxy); in __aafs_profile_mkdir()
1767 profile->dents[AAFS_PROF_RAW_HASH] = dent; in __aafs_profile_mkdir()
1770 profile->label.proxy, NULL, NULL, in __aafs_profile_mkdir()
1774 aa_get_proxy(profile->label.proxy); in __aafs_profile_mkdir()
1775 profile->dents[AAFS_PROF_RAW_ABI] = dent; in __aafs_profile_mkdir()
1778 profile->label.proxy, NULL, NULL, in __aafs_profile_mkdir()
1782 aa_get_proxy(profile->label.proxy); in __aafs_profile_mkdir()
1783 profile->dents[AAFS_PROF_RAW_DATA] = dent; in __aafs_profile_mkdir()
1787 list_for_each_entry(child, &profile->base.profiles, base.list) { in __aafs_profile_mkdir()
1788 error = __aafs_profile_mkdir(child, prof_child_dir(profile)); in __aafs_profile_mkdir()
1799 __aafs_profile_rmdir(profile); in __aafs_profile_mkdir()
2124 * __first_profile - find the first profile in a namespace
2128 * Returns: unrefcounted profile or NULL if no profile
2129 * Requires: profile->ns.lock to be held
2146 * __next_profile - step to the next profile in a profile tree
2147 * @p: current profile in tree (NOT NULL)
2149 * Perform a depth first traversal on the profile tree in a namespace
2151 * Returns: next profile or NULL if done
2152 * Requires: profile->ns.lock to be held
2161 /* is next profile a child */ in __next_profile()
2166 /* is next profile a sibling, parent sibling, gp, sibling, .. */ in __next_profile()
2178 /* is next another profile in the namespace */ in __next_profile()
2187 * next_profile - step to the next profile in where ever it may be
2189 * @profile: current profile (NOT NULL)
2191 * Returns: next profile or NULL if there isn't one
2194 struct aa_profile *profile) in next_profile() argument
2196 struct aa_profile *next = __next_profile(profile); in next_profile()
2201 return __first_profile(root, __next_ns(root, profile->ns)); in next_profile()
2205 * p_start - start a depth first traversal of profile tree
2209 * Returns: first profile under current namespace or NULL if none found
2215 struct aa_profile *profile = NULL; in p_start() local
2220 /* find the first profile */ in p_start()
2222 profile = __first_profile(root, root); in p_start()
2225 for (; profile && l > 0; l--) in p_start()
2226 profile = next_profile(root, profile); in p_start()
2228 return profile; in p_start()
2232 * p_next - read the next profile entry
2234 * @p: profile previously returned
2237 * Returns: next profile after @p or NULL if none
2243 struct aa_profile *profile = p; in p_next() local
2247 return next_profile(ns, profile); in p_next()
2253 * @p: the last profile writen
2259 struct aa_profile *profile = p; in p_stop() local
2262 if (profile) { in p_stop()
2263 for (ns = profile->ns; ns && ns != root; ns = ns->parent) in p_stop()
2271 * seq_show_profile - show a profile entry
2273 * @p: current position (profile) (NOT NULL)
2279 struct aa_profile *profile = (struct aa_profile *)p; in seq_show_profile() local
2282 aa_label_seq_xprint(f, root, &profile->label, in seq_show_profile()
2376 AA_SFS_FILE_BOOLEAN("profile", 1),
2688 /* TODO: add default profile to apparmorfs */ in aa_create_aafs()