提交 9a2d40c1 编写于 作者: J John Johansen

apparmor: add strn version of aa_find_ns

Signed-off-by: NJohn Johansen <john.johansen@canonical.com>
上级 1741e9eb
...@@ -82,6 +82,7 @@ void aa_free_root_ns(void); ...@@ -82,6 +82,7 @@ void aa_free_root_ns(void);
void aa_free_ns_kref(struct kref *kref); void aa_free_ns_kref(struct kref *kref);
struct aa_ns *aa_find_ns(struct aa_ns *root, const char *name); struct aa_ns *aa_find_ns(struct aa_ns *root, const char *name);
struct aa_ns *aa_findn_ns(struct aa_ns *root, const char *name, size_t n);
struct aa_ns *aa_prepare_ns(const char *name); struct aa_ns *aa_prepare_ns(const char *name);
void __aa_remove_ns(struct aa_ns *ns); void __aa_remove_ns(struct aa_ns *ns);
...@@ -119,18 +120,24 @@ static inline void aa_put_ns(struct aa_ns *ns) ...@@ -119,18 +120,24 @@ static inline void aa_put_ns(struct aa_ns *ns)
} }
/** /**
* __aa_find_ns - find a namespace on a list by @name * __aa_findn_ns - find a namespace on a list by @name
* @head: list to search for namespace on (NOT NULL) * @head: list to search for namespace on (NOT NULL)
* @name: name of namespace to look for (NOT NULL) * @name: name of namespace to look for (NOT NULL)
* * @n: length of @name
* Returns: unrefcounted namespace * Returns: unrefcounted namespace
* *
* Requires: rcu_read_lock be held * Requires: rcu_read_lock be held
*/ */
static inline struct aa_ns *__aa_findn_ns(struct list_head *head,
const char *name, size_t n)
{
return (struct aa_ns *)__policy_strn_find(head, name, n);
}
static inline struct aa_ns *__aa_find_ns(struct list_head *head, static inline struct aa_ns *__aa_find_ns(struct list_head *head,
const char *name) const char *name)
{ {
return (struct aa_ns *)__policy_find(head, name); return __aa_findn_ns(head, name, strlen(name));
} }
#endif /* AA_NAMESPACE_H */ #endif /* AA_NAMESPACE_H */
...@@ -139,26 +139,42 @@ void aa_free_ns(struct aa_ns *ns) ...@@ -139,26 +139,42 @@ void aa_free_ns(struct aa_ns *ns)
} }
/** /**
* aa_find_ns - look up a profile namespace on the namespace list * aa_findn_ns - look up a profile namespace on the namespace list
* @root: namespace to search in (NOT NULL) * @root: namespace to search in (NOT NULL)
* @name: name of namespace to find (NOT NULL) * @name: name of namespace to find (NOT NULL)
* @n: length of @name
* *
* Returns: a refcounted namespace on the list, or NULL if no namespace * Returns: a refcounted namespace on the list, or NULL if no namespace
* called @name exists. * called @name exists.
* *
* refcount released by caller * refcount released by caller
*/ */
struct aa_ns *aa_find_ns(struct aa_ns *root, const char *name) struct aa_ns *aa_findn_ns(struct aa_ns *root, const char *name, size_t n)
{ {
struct aa_ns *ns = NULL; struct aa_ns *ns = NULL;
rcu_read_lock(); rcu_read_lock();
ns = aa_get_ns(__aa_find_ns(&root->sub_ns, name)); ns = aa_get_ns(__aa_findn_ns(&root->sub_ns, name, n));
rcu_read_unlock(); rcu_read_unlock();
return ns; return ns;
} }
/**
* aa_find_ns - look up a profile namespace on the namespace list
* @root: namespace to search in (NOT NULL)
* @name: name of namespace to find (NOT NULL)
*
* Returns: a refcounted namespace on the list, or NULL if no namespace
* called @name exists.
*
* refcount released by caller
*/
struct aa_ns *aa_find_ns(struct aa_ns *root, const char *name)
{
return aa_findn_ns(root, name, strlen(name));
}
/** /**
* aa_prepare_ns - find an existing or create a new namespace of @name * aa_prepare_ns - find an existing or create a new namespace of @name
* @name: the namespace to find or add (MAYBE NULL) * @name: the namespace to find or add (MAYBE NULL)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册