seccomp: rename "usage" to "refs" and document
[linux-block.git] / kernel / seccomp.c
index e711d697afb654ab8581d5e3685fc7b84a08bba5..d4dd3344e312be324fd71f0a856bb9af492bf7b4 100644 (file)
@@ -107,10 +107,11 @@ struct notification {
 /**
  * struct seccomp_filter - container for seccomp BPF programs
  *
- * @usage: reference count to manage the object lifetime.
- *         get/put helpers should be used when accessing an instance
- *         outside of a lifetime-guarded section.  In general, this
- *         is only needed for handling filters shared across tasks.
+ * @refs: Reference count to manage the object lifetime.
+ *       A filter's reference count is incremented for each directly
+ *       attached task, once for the dependent filter, and if
+ *       requested for the user notifier. When @refs reaches zero,
+ *       the filter can be freed.
  * @log: true if all actions except for SECCOMP_RET_ALLOW should be logged
  * @prev: points to a previously installed, or inherited, filter
  * @prog: the BPF program to evaluate
@@ -125,10 +126,10 @@ struct notification {
  * how namespaces work.
  *
  * seccomp_filter objects should never be modified after being attached
- * to a task_struct (other than @usage).
+ * to a task_struct (other than @refs).
  */
 struct seccomp_filter {
-       refcount_t usage;
+       refcount_t refs;
        bool log;
        struct seccomp_filter *prev;
        struct bpf_prog *prog;
@@ -464,7 +465,7 @@ static struct seccomp_filter *seccomp_prepare_filter(struct sock_fprog *fprog)
                return ERR_PTR(ret);
        }
 
-       refcount_set(&sfilter->usage, 1);
+       refcount_set(&sfilter->refs, 1);
 
        return sfilter;
 }
@@ -558,7 +559,7 @@ static long seccomp_attach_filter(unsigned int flags,
 
 static void __get_seccomp_filter(struct seccomp_filter *filter)
 {
-       refcount_inc(&filter->usage);
+       refcount_inc(&filter->refs);
 }
 
 /* get_seccomp_filter - increments the reference count of the filter on @tsk */
@@ -581,7 +582,7 @@ static inline void seccomp_filter_free(struct seccomp_filter *filter)
 static void __put_seccomp_filter(struct seccomp_filter *orig)
 {
        /* Clean up single-reference branches iteratively. */
-       while (orig && refcount_dec_and_test(&orig->usage)) {
+       while (orig && refcount_dec_and_test(&orig->refs)) {
                struct seccomp_filter *freeme = orig;
                orig = orig->prev;
                seccomp_filter_free(freeme);