prog_cnt
if (copy_to_user(&uattr->query.prog_cnt, &cnt, sizeof(cnt))) {
if (attr->query.prog_cnt != 0 && prog_ids && cnt)
attr->query.prog_cnt);
struct bpf_prog_array *bpf_prog_array_alloc(u32 prog_cnt, gfp_t flags);
u32 *prog_cnt);
__u32 prog_cnt;
__u32 prog_cnt;
if (!effective_query && attr->query.prog_cnt &&
if (copy_to_user(&uattr->query.prog_cnt, &total_cnt, sizeof(total_cnt)))
if (attr->query.prog_cnt == 0 || !prog_ids || !total_cnt)
if (attr->query.prog_cnt < total_cnt) {
total_cnt = attr->query.prog_cnt;
struct bpf_prog_array *bpf_prog_array_alloc(u32 prog_cnt, gfp_t flags)
if (prog_cnt)
p = kzalloc_flex(*p, items, prog_cnt + 1, flags);
u32 *prog_cnt)
*prog_cnt = cnt;
u32 prog_cnt = 0, flags = 0;
prog_cnt = bpf_prog_array_length(run_array);
if (copy_to_user(&uattr->query.prog_cnt, &prog_cnt, sizeof(prog_cnt)))
if (!attr->query.prog_cnt || !prog_ids || !prog_cnt)
attr->query.prog_cnt);
u32 *ids, prog_cnt, ids_len;
ret = bpf_prog_array_copy_info(progs, ids, ids_len, &prog_cnt);
if (copy_to_user(&uquery->prog_cnt, &prog_cnt, sizeof(prog_cnt)) ||
u32 prog_cnt = 0, flags = 0;
prog_cnt = !prog ? 0 : 1;
if (!attr->query.prog_cnt || !prog_ids || !prog_cnt)
prog_cnt = 0;
copy_to_user(&uattr->query.prog_cnt, &prog_cnt, sizeof(prog_cnt)))
__u32 prog_cnt = 0;
NULL, &prog_cnt);
return prog_cnt;
p.prog_cnt = ARRAY_SIZE(prog_ids);
if (p.prog_cnt == 0)
for (iter = 0; iter < p.prog_cnt; iter++)
p.prog_cnt = ARRAY_SIZE(prog_ids);
if (p.prog_cnt == 0)
for (iter = 0; iter < p.prog_cnt; iter++) {
size_t map_cnt = 0, prog_cnt = 0, attach_map_cnt = 0, file_sz, mmap_sz;
prog_cnt++;
if (prog_cnt) {
if (prog_cnt + attach_map_cnt) {
codegen_progs_skeleton(obj, prog_cnt, true /*populate_links*/);
size_t i, len, file_sz, map_cnt = 0, prog_cnt = 0, mmap_sz, var_cnt = 0, var_idx = 0;
prog_cnt++;
if (prog_cnt) {
codegen_progs_skeleton(obj, prog_cnt, false /*links*/);
codegen_progs_skeleton(struct bpf_object *obj, size_t prog_cnt, bool populate_links)
if (!prog_cnt)
prog_cnt
__u32 prog_cnt;
prog_cnt = ARRAY_SIZE(prog_ids);
&attach_flags, prog_ids, &prog_cnt);
if (prog_cnt == 1)
__u32 prog_cnt;
__u32 prog_cnt;
__u32 *attach_flags, __u32 *prog_ids, __u32 *prog_cnt)
opts.prog_cnt = *prog_cnt;
*prog_cnt = opts.prog_cnt;
__u32 prog_cnt;
__u32 *prog_ids, __u32 *prog_cnt);
size_t prog_cnt, size_t prog_skel_sz)
for (i = 0; i < prog_cnt; i++) {
err = populate_skeleton_progs(obj, s->progs, s->prog_cnt, s->prog_skel_sz);
err = populate_skeleton_progs(s->obj, s->progs, s->prog_cnt, s->prog_skel_sz);
for (i = 0; i < s->prog_cnt; i++) {
for (i = 0; i < s->prog_cnt; i++) {
__u32 duration = 0, prog_cnt = 4, attach_flags;
prog_ids, &prog_cnt),
BPF_F_QUERY_EFFECTIVE, NULL, NULL, &prog_cnt));
CHECK_FAIL(prog_cnt != 4);
prog_ids, &prog_cnt));
CHECK_FAIL(prog_cnt != 4);
prog_cnt = 2;
prog_ids, &prog_cnt) >= 0);
CHECK_FAIL(prog_cnt != 4);
prog_ids, &prog_cnt));
CHECK_FAIL(prog_cnt != 1);
prog_cnt = 4;
prog_ids, &prog_cnt));
CHECK_FAIL(prog_cnt != 3);
prog_ids, &prog_cnt));
CHECK_FAIL(prog_cnt != 0);
__u32 prog_ids[4], prog_cnt = 0, attach_flags, saved_prog_id;
__u32 prog_ids[ARRAY_SIZE(cgs)], prog_cnt = 0, attach_flags, prog_id;
0, &attach_flags, NULL, &prog_cnt);
if (CHECK(prog_cnt != 1, "effect_cnt", "exp %d, got %d\n", 1, prog_cnt))
&prog_cnt);
if (CHECK(prog_cnt != cg_nr, "effect_cnt", "exp %d, got %d\n",
cg_nr, prog_cnt))
&prog_cnt);
if (CHECK(prog_cnt != cg_nr, "effect_cnt", "exp %d, got %d\n",
cg_nr, prog_cnt))
for (i = 1; i < prog_cnt; i++) {
for (i = 0; i < prog_cnt; i++) {
static int check_data_map(struct bpf_object *obj, int prog_cnt, bool reset)
if (check_data_map(obj, prog_cnt, false))
for (i = 0; i < prog_cnt; i++)
result = malloc((prog_cnt + 32 /* spare */) * sizeof(__u64));
for (i = 0; i < prog_cnt; i++) {
int prog_cnt,
link = calloc(sizeof(struct bpf_link *), prog_cnt);
prog = calloc(sizeof(struct bpf_program *), prog_cnt);
__u32 prog_cnt = ARRAY_SIZE(prog_ids);
prog_ids, &prog_cnt);
return prog_cnt == 1 ? prog_ids[0] : 0;
prog_cnt = test->skeleton->prog_cnt;
for (int j = 0; j < prog_cnt; ++j) {
} while (++prog_i < prog_cnt);
int prog_i = 0, prog_cnt;
return p.prog_cnt;
p.prog_ids = malloc(sizeof(u32) * p.prog_cnt);
p.prog_attach_flags = malloc(sizeof(u32) * p.prog_cnt);
for (i = 0; i < p.prog_cnt; i++) {
__u32 prog_cnt = 3;
&attach_flags, prog_ids, &prog_cnt);
if (CHECK(prog_cnt != 3, "bpf_prog_query",
"wrong program count on query: %u", prog_cnt))
__u32 prog_cnt = 3;
&attach_flags, prog_ids, &prog_cnt);
ASSERT_EQ(prog_cnt, 0, "wrong program count on query");
prog_cnt = 1;
&attach_flags, prog_ids, &prog_cnt);
ASSERT_EQ(prog_cnt, 1, "wrong program count on query");
if (CHECK(!err || errno != ENOSPC || query->prog_cnt != 2,
err, errno, query->prog_cnt))
if (CHECK(err || query->prog_cnt != (i + 1),
err, errno, query->prog_cnt))
if (CHECK(err || query->prog_cnt != 0,
err, errno, query->prog_cnt))
if (CHECK(err || query->prog_cnt != 2,
err, errno, query->prog_cnt))
__u32 prog_cnt = 3;
&prog_cnt), -EPERM, "prog_query_fails");
prog_cnt = 10;
&prog_cnt);
if (prog_cnt != 1) {
u32 prog_ids[10], prog_flags[10], prog_cnt;
prog_cnt = 10;
&prog_cnt);
if (prog_cnt != 0) {
int err = 0, prog_cnt = 0;
prog_cnt++;
if (prog_cnt == 1) {