Lines Matching defs:vec

158  * @vec: vector of profiles to compare (NOT NULL)
159 * @n: length of @vec
161 * Returns: <0 if a < vec
162 * ==0 if a == vec
163 * >0 if a > vec
186 static bool vec_is_stale(struct aa_profile **vec, int n)
190 AA_BUG(!vec);
193 if (profile_is_stale(vec[i]))
200 static long accum_vec_flags(struct aa_profile **vec, int n)
205 AA_BUG(!vec);
208 u |= vec[i]->label.flags & (FLAG_DEBUG1 | FLAG_DEBUG2 |
210 if (!(u & vec[i]->label.flags & FLAG_UNCONFINED))
223 * assumes vec is sorted
224 * Assumes @vec has null terminator at vec[n], and will null terminate
225 * vec[n - dups]
227 static inline int unique(struct aa_profile **vec, int n)
232 AA_BUG(!vec);
236 int res = profile_cmp(vec[pos], vec[i]);
238 AA_BUG(res > 0, "vec not sorted");
241 aa_put_profile(vec[i]);
247 vec[pos] = vec[i];
258 * @vec: list of profiles to sort and merge
262 * If @flags & VEC_FLAG_TERMINATE @vec has null terminator at vec[n], and will
263 * null terminate vec[n - dups]
265 int aa_vec_unique(struct aa_profile **vec, int n, int flags)
270 AA_BUG(!vec);
274 sort(vec, n, sizeof(struct aa_profile *), sort_cmp, NULL);
275 dups = unique(vec, n);
281 struct aa_profile *tmp = vec[i];
285 int res = profile_cmp(vec[pos], tmp);
299 vec[j] = vec[j - 1];
300 vec[pos] = tmp;
309 vec[n - dups] = NULL;
327 label->vec[i.i] = (struct aa_profile *)
382 on_list_rcu(&label->vec[0]->base.profiles));
384 on_list_rcu(&label->vec[0]->base.list));
408 label->vec[size] = NULL; /* null terminate */
430 /* + 1 for null terminator entry on vec */
431 new = kzalloc(struct_size(new, vec, size + 1), gfp);
473 return vec_cmp(a->vec, a->size, b->vec, b->size);
483 if (!profile_unconfined(label->vec[i]))
512 int res = profile_cmp(sub->vec[I->j], set->vec[I->i]);
520 return sub->vec[(I->j)++];
524 return sub->vec[(I->j)++];
711 * __vec_find - find label that matches @vec in label set
712 * @vec: vec of profiles to find matching label for (NOT NULL)
713 * @n: length of @vec
715 * Requires: @vec_labelset(vec) lock held
720 * else NULL if @vec equiv is not in tree
722 static struct aa_label *__vec_find(struct aa_profile **vec, int n)
726 AA_BUG(!vec);
727 AA_BUG(!*vec);
730 node = vec_labelset(vec, n)->root.rb_node;
733 int result = vec_cmp(this->vec, this->size, vec, n);
761 return __vec_find(label->vec, label->size);
830 * @vec: array of profiles to find equiv label for (NOT NULL)
831 * @n: length of @vec
833 * Returns: refcounted label if @vec equiv is in tree
834 * else NULL if @vec equiv is not in tree
836 static struct aa_label *vec_find(struct aa_profile **vec, int n)
842 AA_BUG(!vec);
843 AA_BUG(!*vec);
846 ls = vec_labelset(vec, n);
848 label = __vec_find(vec, n);
855 static struct aa_label *vec_create_and_insert_label(struct aa_profile **vec,
864 AA_BUG(!vec);
867 return aa_get_label(&vec[0]->label);
869 ls = labels_set(&vec[len - 1]->label);
879 new->vec[i] = aa_get_profile(vec[i]);
889 struct aa_label *aa_vec_find_or_create_label(struct aa_profile **vec, int len,
892 struct aa_label *label = vec_find(vec, len);
897 return vec_create_and_insert_label(vec, len, gfp);
914 return vec_find(label->vec, label->size);
976 int res = profile_cmp(a->vec[I->i], b->vec[I->j]);
979 return b->vec[(I->j)++];
984 return a->vec[(I->i)++];
988 return b->vec[(I->j)++];
1019 int res = profile_cmp(p, z->vec[k]);
1071 new->vec[k] = aa_get_newest_profile(next);
1072 AA_BUG(!new->vec[k]->label.proxy);
1073 AA_BUG(!new->vec[k]->label.proxy->label);
1074 if (next->label.proxy != new->vec[k]->label.proxy)
1079 new->vec[k++] = aa_get_profile(next);
1083 new->vec[k] = NULL;
1086 new->size -= aa_vec_unique(&new->vec[0], new->size,
1090 label = aa_get_label(&new->vec[0]->label);
1103 new->flags |= accum_vec_flags(new->vec, new->size);
1889 DEFINE_VEC(profile, vec);
1912 error = vec_setup(profile, vec, len, gfp);
1917 vec[i] = aa_get_profile(base->vec[i]);
1921 vec[i] = fqlookupn_profile(base, currbase, str, split - str);
1922 if (!vec[i])
1928 if (vec[i]->ns != labels_ns(currbase))
1929 currbase = &vec[i]->label;
1935 vec[i] = fqlookupn_profile(base, currbase, str, end - str);
1936 if (!vec[i])
1940 /* no need to free vec as len < LOCAL_VEC_ENTRIES */
1941 return &vec[0]->label;
1943 len -= aa_vec_unique(vec, len, VEC_FLAG_TERMINATE);
1946 label = aa_get_label(&vec[0]->label);
1951 label = aa_vec_find_or_create_label(vec, len, gfp);
1953 label = vec_find(vec, len);
1959 vec_cleanup(profile, vec, len);
2025 vec_is_stale(label->vec, label->size)) &&
2071 AA_BUG(!label->vec[i]);
2072 new->vec[i] = aa_get_newest_profile(label->vec[i]);
2073 AA_BUG(!new->vec[i]);
2074 AA_BUG(!new->vec[i]->label.proxy);
2075 AA_BUG(!new->vec[i]->label.proxy->label);
2076 if (new->vec[i]->label.proxy != label->vec[i]->label.proxy)
2082 new->size -= aa_vec_unique(&new->vec[0], new->size,
2086 tmp = aa_get_label(&new->vec[0]->label);