Merge branch 'rename-info_cnt-to-nr_info'
Yonghong Song says: ==================== Before func_info and line_info are added to the kernel, there are several fields in structure bpf_prog_info specifying the "count" of a user buffer, e.g., __u32 nr_jited_ksyms; __u32 nr_jited_func_lens; The naming convention has the prefix "nr_". The func_info and line_info support added several fields __u32 func_info_cnt; __u32 line_info_cnt; __u32 jited_line_info_cnt; to indicate the "count" of buffers func_info, line_info and jited_line_info. The original intention is to keep the field names the same as those in structure bpf_attr, so it will be clear that the "count" returned to user space will be the same as the one passed to the kernel during prog load. Unfortunately, the field names *_info_cnt are not consistent with other existing fields in bpf_prog_info. This patch set renamed the fields *_info_cnt to nr_*_info to keep naming convention consistent. ==================== Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
Коммит
aa570ff4fd
|
@ -2696,11 +2696,11 @@ struct bpf_prog_info {
|
|||
__u32 btf_id;
|
||||
__u32 func_info_rec_size;
|
||||
__aligned_u64 func_info;
|
||||
__u32 func_info_cnt;
|
||||
__u32 line_info_cnt;
|
||||
__u32 nr_func_info;
|
||||
__u32 nr_line_info;
|
||||
__aligned_u64 line_info;
|
||||
__aligned_u64 jited_line_info;
|
||||
__u32 jited_line_info_cnt;
|
||||
__u32 nr_jited_line_info;
|
||||
__u32 line_info_rec_size;
|
||||
__u32 jited_line_info_rec_size;
|
||||
} __attribute__((aligned(8)));
|
||||
|
|
|
@ -2055,15 +2055,15 @@ static int set_info_rec_size(struct bpf_prog_info *info)
|
|||
* _rec_size back to the info.
|
||||
*/
|
||||
|
||||
if ((info->func_info_cnt || info->func_info_rec_size) &&
|
||||
if ((info->nr_func_info || info->func_info_rec_size) &&
|
||||
info->func_info_rec_size != sizeof(struct bpf_func_info))
|
||||
return -EINVAL;
|
||||
|
||||
if ((info->line_info_cnt || info->line_info_rec_size) &&
|
||||
if ((info->nr_line_info || info->line_info_rec_size) &&
|
||||
info->line_info_rec_size != sizeof(struct bpf_line_info))
|
||||
return -EINVAL;
|
||||
|
||||
if ((info->jited_line_info_cnt || info->jited_line_info_rec_size) &&
|
||||
if ((info->nr_jited_line_info || info->jited_line_info_rec_size) &&
|
||||
info->jited_line_info_rec_size != sizeof(__u64))
|
||||
return -EINVAL;
|
||||
|
||||
|
@ -2125,9 +2125,9 @@ static int bpf_prog_get_info_by_fd(struct bpf_prog *prog,
|
|||
info.xlated_prog_len = 0;
|
||||
info.nr_jited_ksyms = 0;
|
||||
info.nr_jited_func_lens = 0;
|
||||
info.func_info_cnt = 0;
|
||||
info.line_info_cnt = 0;
|
||||
info.jited_line_info_cnt = 0;
|
||||
info.nr_func_info = 0;
|
||||
info.nr_line_info = 0;
|
||||
info.nr_jited_line_info = 0;
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
@ -2268,14 +2268,14 @@ static int bpf_prog_get_info_by_fd(struct bpf_prog *prog,
|
|||
if (prog->aux->btf)
|
||||
info.btf_id = btf_id(prog->aux->btf);
|
||||
|
||||
ulen = info.func_info_cnt;
|
||||
info.func_info_cnt = prog->aux->func_info_cnt;
|
||||
if (info.func_info_cnt && ulen) {
|
||||
ulen = info.nr_func_info;
|
||||
info.nr_func_info = prog->aux->func_info_cnt;
|
||||
if (info.nr_func_info && ulen) {
|
||||
if (bpf_dump_raw_ok()) {
|
||||
char __user *user_finfo;
|
||||
|
||||
user_finfo = u64_to_user_ptr(info.func_info);
|
||||
ulen = min_t(u32, info.func_info_cnt, ulen);
|
||||
ulen = min_t(u32, info.nr_func_info, ulen);
|
||||
if (copy_to_user(user_finfo, prog->aux->func_info,
|
||||
info.func_info_rec_size * ulen))
|
||||
return -EFAULT;
|
||||
|
@ -2284,14 +2284,14 @@ static int bpf_prog_get_info_by_fd(struct bpf_prog *prog,
|
|||
}
|
||||
}
|
||||
|
||||
ulen = info.line_info_cnt;
|
||||
info.line_info_cnt = prog->aux->nr_linfo;
|
||||
if (info.line_info_cnt && ulen) {
|
||||
ulen = info.nr_line_info;
|
||||
info.nr_line_info = prog->aux->nr_linfo;
|
||||
if (info.nr_line_info && ulen) {
|
||||
if (bpf_dump_raw_ok()) {
|
||||
__u8 __user *user_linfo;
|
||||
|
||||
user_linfo = u64_to_user_ptr(info.line_info);
|
||||
ulen = min_t(u32, info.line_info_cnt, ulen);
|
||||
ulen = min_t(u32, info.nr_line_info, ulen);
|
||||
if (copy_to_user(user_linfo, prog->aux->linfo,
|
||||
info.line_info_rec_size * ulen))
|
||||
return -EFAULT;
|
||||
|
@ -2300,18 +2300,18 @@ static int bpf_prog_get_info_by_fd(struct bpf_prog *prog,
|
|||
}
|
||||
}
|
||||
|
||||
ulen = info.jited_line_info_cnt;
|
||||
ulen = info.nr_jited_line_info;
|
||||
if (prog->aux->jited_linfo)
|
||||
info.jited_line_info_cnt = prog->aux->nr_linfo;
|
||||
info.nr_jited_line_info = prog->aux->nr_linfo;
|
||||
else
|
||||
info.jited_line_info_cnt = 0;
|
||||
if (info.jited_line_info_cnt && ulen) {
|
||||
info.nr_jited_line_info = 0;
|
||||
if (info.nr_jited_line_info && ulen) {
|
||||
if (bpf_dump_raw_ok()) {
|
||||
__u64 __user *user_linfo;
|
||||
u32 i;
|
||||
|
||||
user_linfo = u64_to_user_ptr(info.jited_line_info);
|
||||
ulen = min_t(u32, info.jited_line_info_cnt, ulen);
|
||||
ulen = min_t(u32, info.nr_jited_line_info, ulen);
|
||||
for (i = 0; i < ulen; i++) {
|
||||
if (put_user((__u64)(long)prog->aux->jited_linfo[i],
|
||||
&user_linfo[i]))
|
||||
|
|
|
@ -425,7 +425,7 @@ static int do_dump(int argc, char **argv)
|
|||
{
|
||||
unsigned int finfo_rec_size, linfo_rec_size, jited_linfo_rec_size;
|
||||
void *func_info = NULL, *linfo = NULL, *jited_linfo = NULL;
|
||||
unsigned int finfo_cnt, linfo_cnt = 0, jited_linfo_cnt = 0;
|
||||
unsigned int nr_finfo, nr_linfo = 0, nr_jited_linfo = 0;
|
||||
struct bpf_prog_linfo *prog_linfo = NULL;
|
||||
unsigned long *func_ksyms = NULL;
|
||||
struct bpf_prog_info info = {};
|
||||
|
@ -537,10 +537,10 @@ static int do_dump(int argc, char **argv)
|
|||
}
|
||||
}
|
||||
|
||||
finfo_cnt = info.func_info_cnt;
|
||||
nr_finfo = info.nr_func_info;
|
||||
finfo_rec_size = info.func_info_rec_size;
|
||||
if (finfo_cnt && finfo_rec_size) {
|
||||
func_info = malloc(finfo_cnt * finfo_rec_size);
|
||||
if (nr_finfo && finfo_rec_size) {
|
||||
func_info = malloc(nr_finfo * finfo_rec_size);
|
||||
if (!func_info) {
|
||||
p_err("mem alloc failed");
|
||||
close(fd);
|
||||
|
@ -549,9 +549,9 @@ static int do_dump(int argc, char **argv)
|
|||
}
|
||||
|
||||
linfo_rec_size = info.line_info_rec_size;
|
||||
if (info.line_info_cnt && linfo_rec_size && info.btf_id) {
|
||||
linfo_cnt = info.line_info_cnt;
|
||||
linfo = malloc(linfo_cnt * linfo_rec_size);
|
||||
if (info.nr_line_info && linfo_rec_size && info.btf_id) {
|
||||
nr_linfo = info.nr_line_info;
|
||||
linfo = malloc(nr_linfo * linfo_rec_size);
|
||||
if (!linfo) {
|
||||
p_err("mem alloc failed");
|
||||
close(fd);
|
||||
|
@ -560,13 +560,13 @@ static int do_dump(int argc, char **argv)
|
|||
}
|
||||
|
||||
jited_linfo_rec_size = info.jited_line_info_rec_size;
|
||||
if (info.jited_line_info_cnt &&
|
||||
if (info.nr_jited_line_info &&
|
||||
jited_linfo_rec_size &&
|
||||
info.nr_jited_ksyms &&
|
||||
info.nr_jited_func_lens &&
|
||||
info.btf_id) {
|
||||
jited_linfo_cnt = info.jited_line_info_cnt;
|
||||
jited_linfo = malloc(jited_linfo_cnt * jited_linfo_rec_size);
|
||||
nr_jited_linfo = info.nr_jited_line_info;
|
||||
jited_linfo = malloc(nr_jited_linfo * jited_linfo_rec_size);
|
||||
if (!jited_linfo) {
|
||||
p_err("mem alloc failed");
|
||||
close(fd);
|
||||
|
@ -582,13 +582,13 @@ static int do_dump(int argc, char **argv)
|
|||
info.nr_jited_ksyms = nr_func_ksyms;
|
||||
info.jited_func_lens = ptr_to_u64(func_lens);
|
||||
info.nr_jited_func_lens = nr_func_lens;
|
||||
info.func_info_cnt = finfo_cnt;
|
||||
info.nr_func_info = nr_finfo;
|
||||
info.func_info_rec_size = finfo_rec_size;
|
||||
info.func_info = ptr_to_u64(func_info);
|
||||
info.line_info_cnt = linfo_cnt;
|
||||
info.nr_line_info = nr_linfo;
|
||||
info.line_info_rec_size = linfo_rec_size;
|
||||
info.line_info = ptr_to_u64(linfo);
|
||||
info.jited_line_info_cnt = jited_linfo_cnt;
|
||||
info.nr_jited_line_info = nr_jited_linfo;
|
||||
info.jited_line_info_rec_size = jited_linfo_rec_size;
|
||||
info.jited_line_info = ptr_to_u64(jited_linfo);
|
||||
|
||||
|
@ -614,9 +614,9 @@ static int do_dump(int argc, char **argv)
|
|||
goto err_free;
|
||||
}
|
||||
|
||||
if (info.func_info_cnt != finfo_cnt) {
|
||||
p_err("incorrect func_info_cnt %d vs. expected %d",
|
||||
info.func_info_cnt, finfo_cnt);
|
||||
if (info.nr_func_info != nr_finfo) {
|
||||
p_err("incorrect nr_func_info %d vs. expected %d",
|
||||
info.nr_func_info, nr_finfo);
|
||||
goto err_free;
|
||||
}
|
||||
|
||||
|
@ -630,12 +630,12 @@ static int do_dump(int argc, char **argv)
|
|||
/* kernel.kptr_restrict is set. No func_info available. */
|
||||
free(func_info);
|
||||
func_info = NULL;
|
||||
finfo_cnt = 0;
|
||||
nr_finfo = 0;
|
||||
}
|
||||
|
||||
if (linfo && info.line_info_cnt != linfo_cnt) {
|
||||
p_err("incorrect line_info_cnt %u vs. expected %u",
|
||||
info.line_info_cnt, linfo_cnt);
|
||||
if (linfo && info.nr_line_info != nr_linfo) {
|
||||
p_err("incorrect nr_line_info %u vs. expected %u",
|
||||
info.nr_line_info, nr_linfo);
|
||||
goto err_free;
|
||||
}
|
||||
|
||||
|
@ -645,9 +645,9 @@ static int do_dump(int argc, char **argv)
|
|||
goto err_free;
|
||||
}
|
||||
|
||||
if (jited_linfo && info.jited_line_info_cnt != jited_linfo_cnt) {
|
||||
p_err("incorrect jited_line_info_cnt %u vs. expected %u",
|
||||
info.jited_line_info_cnt, jited_linfo_cnt);
|
||||
if (jited_linfo && info.nr_jited_line_info != nr_jited_linfo) {
|
||||
p_err("incorrect nr_jited_line_info %u vs. expected %u",
|
||||
info.nr_jited_line_info, nr_jited_linfo);
|
||||
goto err_free;
|
||||
}
|
||||
|
||||
|
@ -670,7 +670,7 @@ static int do_dump(int argc, char **argv)
|
|||
goto err_free;
|
||||
}
|
||||
|
||||
if (linfo_cnt) {
|
||||
if (nr_linfo) {
|
||||
prog_linfo = bpf_prog_linfo__new(&info);
|
||||
if (!prog_linfo)
|
||||
p_info("error in processing bpf_line_info. continue without it.");
|
||||
|
|
|
@ -2695,11 +2695,11 @@ struct bpf_prog_info {
|
|||
__u32 btf_id;
|
||||
__u32 func_info_rec_size;
|
||||
__aligned_u64 func_info;
|
||||
__u32 func_info_cnt;
|
||||
__u32 line_info_cnt;
|
||||
__u32 nr_func_info;
|
||||
__u32 nr_line_info;
|
||||
__aligned_u64 line_info;
|
||||
__aligned_u64 jited_line_info;
|
||||
__u32 jited_line_info_cnt;
|
||||
__u32 nr_jited_line_info;
|
||||
__u32 line_info_rec_size;
|
||||
__u32 jited_line_info_rec_size;
|
||||
} __attribute__((aligned(8)));
|
||||
|
|
|
@ -105,7 +105,7 @@ struct bpf_prog_linfo *bpf_prog_linfo__new(const struct bpf_prog_info *info)
|
|||
struct bpf_prog_linfo *prog_linfo;
|
||||
__u32 nr_linfo, nr_jited_func;
|
||||
|
||||
nr_linfo = info->line_info_cnt;
|
||||
nr_linfo = info->nr_line_info;
|
||||
|
||||
/*
|
||||
* Test !info->line_info because the kernel may NULL
|
||||
|
@ -138,7 +138,7 @@ struct bpf_prog_linfo *bpf_prog_linfo__new(const struct bpf_prog_info *info)
|
|||
nr_jited_func = info->nr_jited_ksyms;
|
||||
if (!nr_jited_func ||
|
||||
!info->jited_line_info ||
|
||||
info->jited_line_info_cnt != nr_linfo ||
|
||||
info->nr_jited_line_info != nr_linfo ||
|
||||
info->jited_line_info_rec_size < sizeof(__u64) ||
|
||||
info->nr_jited_func_lens != nr_jited_func ||
|
||||
!info->jited_ksyms ||
|
||||
|
|
|
@ -2548,9 +2548,9 @@ static int do_test_file(unsigned int test_num)
|
|||
err = -1;
|
||||
goto done;
|
||||
}
|
||||
if (CHECK(info.func_info_cnt != 3,
|
||||
"incorrect info.func_info_cnt (1st) %d",
|
||||
info.func_info_cnt)) {
|
||||
if (CHECK(info.nr_func_info != 3,
|
||||
"incorrect info.nr_func_info (1st) %d",
|
||||
info.nr_func_info)) {
|
||||
err = -1;
|
||||
goto done;
|
||||
}
|
||||
|
@ -2561,7 +2561,7 @@ static int do_test_file(unsigned int test_num)
|
|||
goto done;
|
||||
}
|
||||
|
||||
func_info = malloc(info.func_info_cnt * rec_size);
|
||||
func_info = malloc(info.nr_func_info * rec_size);
|
||||
if (CHECK(!func_info, "out of memory")) {
|
||||
err = -1;
|
||||
goto done;
|
||||
|
@ -2569,7 +2569,7 @@ static int do_test_file(unsigned int test_num)
|
|||
|
||||
/* reset info to only retrieve func_info related data */
|
||||
memset(&info, 0, sizeof(info));
|
||||
info.func_info_cnt = 3;
|
||||
info.nr_func_info = 3;
|
||||
info.func_info_rec_size = rec_size;
|
||||
info.func_info = ptr_to_u64(func_info);
|
||||
|
||||
|
@ -2580,9 +2580,9 @@ static int do_test_file(unsigned int test_num)
|
|||
err = -1;
|
||||
goto done;
|
||||
}
|
||||
if (CHECK(info.func_info_cnt != 3,
|
||||
"incorrect info.func_info_cnt (2nd) %d",
|
||||
info.func_info_cnt)) {
|
||||
if (CHECK(info.nr_func_info != 3,
|
||||
"incorrect info.nr_func_info (2nd) %d",
|
||||
info.nr_func_info)) {
|
||||
err = -1;
|
||||
goto done;
|
||||
}
|
||||
|
@ -3544,9 +3544,9 @@ static int test_get_finfo(const struct prog_info_raw_test *test,
|
|||
fprintf(stderr, "%s\n", btf_log_buf);
|
||||
return -1;
|
||||
}
|
||||
if (CHECK(info.func_info_cnt != test->func_info_cnt,
|
||||
"incorrect info.func_info_cnt (1st) %d",
|
||||
info.func_info_cnt)) {
|
||||
if (CHECK(info.nr_func_info != test->func_info_cnt,
|
||||
"incorrect info.nr_func_info (1st) %d",
|
||||
info.nr_func_info)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -3556,16 +3556,16 @@ static int test_get_finfo(const struct prog_info_raw_test *test,
|
|||
return -1;
|
||||
}
|
||||
|
||||
if (!info.func_info_cnt)
|
||||
if (!info.nr_func_info)
|
||||
return 0;
|
||||
|
||||
func_info = malloc(info.func_info_cnt * rec_size);
|
||||
func_info = malloc(info.nr_func_info * rec_size);
|
||||
if (CHECK(!func_info, "out of memory"))
|
||||
return -1;
|
||||
|
||||
/* reset info to only retrieve func_info related data */
|
||||
memset(&info, 0, sizeof(info));
|
||||
info.func_info_cnt = test->func_info_cnt;
|
||||
info.nr_func_info = test->func_info_cnt;
|
||||
info.func_info_rec_size = rec_size;
|
||||
info.func_info = ptr_to_u64(func_info);
|
||||
err = bpf_obj_get_info_by_fd(prog_fd, &info, &info_len);
|
||||
|
@ -3574,9 +3574,9 @@ static int test_get_finfo(const struct prog_info_raw_test *test,
|
|||
err = -1;
|
||||
goto done;
|
||||
}
|
||||
if (CHECK(info.func_info_cnt != test->func_info_cnt,
|
||||
"incorrect info.func_info_cnt (2nd) %d",
|
||||
info.func_info_cnt)) {
|
||||
if (CHECK(info.nr_func_info != test->func_info_cnt,
|
||||
"incorrect info.nr_func_info (2nd) %d",
|
||||
info.nr_func_info)) {
|
||||
err = -1;
|
||||
goto done;
|
||||
}
|
||||
|
@ -3648,14 +3648,14 @@ static int test_get_linfo(const struct prog_info_raw_test *test,
|
|||
nr_jited_func_lens = 1;
|
||||
}
|
||||
|
||||
if (CHECK(info.line_info_cnt != cnt ||
|
||||
info.jited_line_info_cnt != jited_cnt ||
|
||||
if (CHECK(info.nr_line_info != cnt ||
|
||||
info.nr_jited_line_info != jited_cnt ||
|
||||
info.nr_jited_ksyms != nr_jited_ksyms ||
|
||||
info.nr_jited_func_lens != nr_jited_func_lens ||
|
||||
(!info.line_info_cnt && info.jited_line_info_cnt),
|
||||
"info: line_info_cnt:%u(expected:%u) jited_line_info_cnt:%u(expected:%u) nr_jited_ksyms:%u(expected:%u) nr_jited_func_lens:%u(expected:%u)",
|
||||
info.line_info_cnt, cnt,
|
||||
info.jited_line_info_cnt, jited_cnt,
|
||||
(!info.nr_line_info && info.nr_jited_line_info),
|
||||
"info: nr_line_info:%u(expected:%u) nr_jited_line_info:%u(expected:%u) nr_jited_ksyms:%u(expected:%u) nr_jited_func_lens:%u(expected:%u)",
|
||||
info.nr_line_info, cnt,
|
||||
info.nr_jited_line_info, jited_cnt,
|
||||
info.nr_jited_ksyms, nr_jited_ksyms,
|
||||
info.nr_jited_func_lens, nr_jited_func_lens)) {
|
||||
err = -1;
|
||||
|
@ -3684,7 +3684,7 @@ static int test_get_linfo(const struct prog_info_raw_test *test,
|
|||
err = -1;
|
||||
goto done;
|
||||
}
|
||||
info.line_info_cnt = cnt;
|
||||
info.nr_line_info = cnt;
|
||||
info.line_info_rec_size = rec_size;
|
||||
info.line_info = ptr_to_u64(linfo);
|
||||
|
||||
|
@ -3700,7 +3700,7 @@ static int test_get_linfo(const struct prog_info_raw_test *test,
|
|||
goto done;
|
||||
}
|
||||
|
||||
info.jited_line_info_cnt = jited_cnt;
|
||||
info.nr_jited_line_info = jited_cnt;
|
||||
info.jited_line_info_rec_size = jited_rec_size;
|
||||
info.jited_line_info = ptr_to_u64(jited_linfo);
|
||||
info.nr_jited_ksyms = nr_jited_ksyms;
|
||||
|
@ -3717,15 +3717,15 @@ static int test_get_linfo(const struct prog_info_raw_test *test,
|
|||
*/
|
||||
if (CHECK(err == -1 ||
|
||||
!info.line_info ||
|
||||
info.line_info_cnt != cnt ||
|
||||
info.nr_line_info != cnt ||
|
||||
(jited_cnt && !info.jited_line_info) ||
|
||||
info.jited_line_info_cnt != jited_cnt ||
|
||||
info.nr_jited_line_info != jited_cnt ||
|
||||
info.line_info_rec_size != rec_size ||
|
||||
info.jited_line_info_rec_size != jited_rec_size,
|
||||
"err:%d errno:%d info: line_info_cnt:%u(expected:%u) jited_line_info_cnt:%u(expected:%u) line_info_rec_size:%u(expected:%u) jited_linfo_rec_size:%u(expected:%u) line_info:%p jited_line_info:%p",
|
||||
"err:%d errno:%d info: nr_line_info:%u(expected:%u) nr_jited_line_info:%u(expected:%u) line_info_rec_size:%u(expected:%u) jited_linfo_rec_size:%u(expected:%u) line_info:%p jited_line_info:%p",
|
||||
err, errno,
|
||||
info.line_info_cnt, cnt,
|
||||
info.jited_line_info_cnt, jited_cnt,
|
||||
info.nr_line_info, cnt,
|
||||
info.nr_jited_line_info, jited_cnt,
|
||||
info.line_info_rec_size, rec_size,
|
||||
info.jited_line_info_rec_size, jited_rec_size,
|
||||
(void *)(long)info.line_info,
|
||||
|
|
Загрузка…
Ссылка в новой задаче