Lines Matching defs:vec

189 static bool vec_is_stale(struct aa_profile **vec, int n)
193 AA_BUG(!vec);
196 if (profile_is_stale(vec[i]))
215 u |= new->vec[i]->label.flags & (FLAG_DEBUG1 | FLAG_DEBUG2 |
217 if (!(u & new->vec[i]->label.flags & FLAG_UNCONFINED))
219 new->mediates |= new->vec[i]->label.mediates;
230 * assumes vec is sorted
231 * Assumes @vec has null terminator at vec[n], and will null terminate
232 * vec[n - dups]
234 static inline int unique(struct aa_profile **vec, int n)
239 AA_BUG(!vec);
243 int res = profile_cmp(vec[pos], vec[i]);
245 AA_BUG(res > 0, "vec not sorted");
248 aa_put_profile(vec[i]);
254 vec[pos] = vec[i];
265 * @vec: list of profiles to sort and merge
266 * @flags: null terminator flags of @vec
270 * If @flags & VEC_FLAG_TERMINATE @vec has null terminator at vec[n], and will
271 * null terminate vec[n - dups]
273 int aa_vec_unique(struct aa_profile **vec, int n, int flags)
278 AA_BUG(!vec);
282 sort(vec, n, sizeof(struct aa_profile *), sort_cmp, NULL);
283 dups = unique(vec, n);
289 struct aa_profile *tmp = vec[i];
293 int res = profile_cmp(vec[pos], tmp);
307 vec[j] = vec[j - 1];
308 vec[pos] = tmp;
317 vec[n - dups] = NULL;
335 label->vec[i.i] = (struct aa_profile *)
391 on_list_rcu(&label->vec[0]->base.profiles));
393 on_list_rcu(&label->vec[0]->base.list));
417 label->vec[size] = NULL; /* null terminate */
440 /* + 1 for null terminator entry on vec */
441 new = kzalloc_flex(*new, vec, size + 1, gfp);
483 return vec_cmp(a->vec, a->size, b->vec, b->size);
493 if (!profile_unconfined(label->vec[i]))
522 int res = profile_cmp(sub->vec[I->j], set->vec[I->i]);
530 return sub->vec[(I->j)++];
534 return sub->vec[(I->j)++];
723 * __vec_find - find label that matches @vec in label set
724 * @vec: vec of profiles to find matching label for (NOT NULL)
725 * @n: length of @vec
727 * Requires: @vec_labelset(vec) lock held
732 * else NULL if @vec equiv is not in tree
734 static struct aa_label *__vec_find(struct aa_profile **vec, int n)
738 AA_BUG(!vec);
739 AA_BUG(!*vec);
742 node = vec_labelset(vec, n)->root.rb_node;
745 int result = vec_cmp(this->vec, this->size, vec, n);
773 return __vec_find(label->vec, label->size);
842 * @vec: array of profiles to find equiv label for (NOT NULL)
843 * @n: length of @vec
845 * Returns: refcounted label if @vec equiv is in tree
846 * else NULL if @vec equiv is not in tree
848 static struct aa_label *vec_find(struct aa_profile **vec, int n)
854 AA_BUG(!vec);
855 AA_BUG(!*vec);
858 ls = vec_labelset(vec, n);
860 label = __vec_find(vec, n);
867 static struct aa_label *vec_create_and_insert_label(struct aa_profile **vec,
876 AA_BUG(!vec);
879 return aa_get_label(&vec[0]->label);
881 ls = labels_set(&vec[len - 1]->label);
891 new->vec[i] = aa_get_profile(vec[i]);
901 struct aa_label *aa_vec_find_or_create_label(struct aa_profile **vec, int len,
904 struct aa_label *label = vec_find(vec, len);
909 return vec_create_and_insert_label(vec, len, gfp);
971 int res = profile_cmp(a->vec[I->i], b->vec[I->j]);
974 return b->vec[(I->j)++];
979 return a->vec[(I->i)++];
983 return b->vec[(I->j)++];
1014 int res = profile_cmp(p, z->vec[k]);
1066 new->vec[k] = aa_get_newest_profile(next);
1067 AA_BUG(!new->vec[k]->label.proxy);
1068 AA_BUG(!new->vec[k]->label.proxy->label);
1069 if (next->label.proxy != new->vec[k]->label.proxy)
1074 new->vec[k++] = aa_get_profile(next);
1078 new->vec[k] = NULL;
1081 new->size -= aa_vec_unique(&new->vec[0], new->size,
1085 label = aa_get_label(&new->vec[0]->label);
1862 DEFINE_VEC(profile, vec);
1885 error = vec_setup(profile, vec, len, gfp);
1890 vec[i] = aa_get_profile(base->vec[i]);
1894 vec[i] = fqlookupn_profile(base, currbase, str, split - str);
1895 if (!vec[i])
1901 if (vec[i]->ns != labels_ns(currbase))
1902 currbase = &vec[i]->label;
1908 vec[i] = fqlookupn_profile(base, currbase, str, end - str);
1909 if (!vec[i])
1913 /* no need to free vec as len < LOCAL_VEC_ENTRIES */
1914 return &vec[0]->label;
1916 len -= aa_vec_unique(vec, len, VEC_FLAG_TERMINATE);
1919 label = aa_get_label(&vec[0]->label);
1924 label = aa_vec_find_or_create_label(vec, len, gfp);
1926 label = vec_find(vec, len);
1932 vec_cleanup(profile, vec, len);
1998 vec_is_stale(label->vec, label->size)) &&
2044 AA_BUG(!label->vec[i]);
2045 new->vec[i] = aa_get_newest_profile(label->vec[i]);
2046 AA_BUG(!new->vec[i]);
2047 AA_BUG(!new->vec[i]->label.proxy);
2048 AA_BUG(!new->vec[i]->label.proxy->label);
2049 if (new->vec[i]->label.proxy != label->vec[i]->label.proxy)
2055 new->size -= aa_vec_unique(&new->vec[0], new->size,
2059 tmp = aa_get_label(&new->vec[0]->label);