2022-09-14 02:26:49

by Peilin Ye

[permalink] [raw]
Subject: [PATCH bpf-next] bpf/btf: Use btf_type_str() whenever possible

From: Peilin Ye <[email protected]>

We have btf_type_str(). Use it whenever possible in btf.c, instead of
"btf_kind_str[BTF_INFO_KIND(t->info)]".

Signed-off-by: Peilin Ye <[email protected]>
---
kernel/bpf/btf.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c
index cad4657ba2ce..81dc7423d723 100644
--- a/kernel/bpf/btf.c
+++ b/kernel/bpf/btf.c
@@ -5403,7 +5403,7 @@ bool btf_ctx_access(int off, int size, enum bpf_access_type type,
if (!btf_type_is_small_int(t)) {
bpf_log(log,
"ret type %s not allowed for fmod_ret\n",
- btf_kind_str[BTF_INFO_KIND(t->info)]);
+ btf_type_str(t));
return false;
}
break;
@@ -5430,7 +5430,7 @@ bool btf_ctx_access(int off, int size, enum bpf_access_type type,
"func '%s' arg%d '%s' has type %s. Only pointer access is allowed\n",
tname, arg,
__btf_name_by_offset(btf, t->name_off),
- btf_kind_str[BTF_INFO_KIND(t->info)]);
+ btf_type_str(t));
return false;
}

@@ -5514,11 +5514,11 @@ bool btf_ctx_access(int off, int size, enum bpf_access_type type,
if (!btf_type_is_struct(t)) {
bpf_log(log,
"func '%s' arg%d type %s is not a struct\n",
- tname, arg, btf_kind_str[BTF_INFO_KIND(t->info)]);
+ tname, arg, btf_type_str(t));
return false;
}
bpf_log(log, "func '%s' arg%d has btf_id %d type %s '%s'\n",
- tname, arg, info->btf_id, btf_kind_str[BTF_INFO_KIND(t->info)],
+ tname, arg, info->btf_id, btf_type_str(t),
__btf_name_by_offset(btf, t->name_off));
return true;
}
@@ -5924,7 +5924,7 @@ int btf_distill_func_proto(struct bpf_verifier_log *log,
if (ret < 0) {
bpf_log(log,
"The function %s return type %s is unsupported.\n",
- tname, btf_kind_str[BTF_INFO_KIND(t->info)]);
+ tname, btf_type_str(t));
return -EINVAL;
}
m->ret_size = ret;
@@ -5940,7 +5940,7 @@ int btf_distill_func_proto(struct bpf_verifier_log *log,
if (ret < 0) {
bpf_log(log,
"The function %s arg%d type %s is unsupported.\n",
- tname, i, btf_kind_str[BTF_INFO_KIND(t->info)]);
+ tname, i, btf_type_str(t));
return -EINVAL;
}
if (ret == 0) {
@@ -6593,7 +6593,7 @@ int btf_prepare_func_args(struct bpf_verifier_env *env, int subprog,
continue;
}
bpf_log(log, "Arg#%d type %s in %s() is not supported yet.\n",
- i, btf_kind_str[BTF_INFO_KIND(t->info)], tname);
+ i, btf_type_str(t), tname);
return -EINVAL;
}
return 0;
--
2.20.1


2022-09-16 18:43:11

by Martin KaFai Lau

[permalink] [raw]
Subject: Re: [PATCH bpf-next] bpf/btf: Use btf_type_str() whenever possible

On 9/13/22 7:13 PM, Peilin Ye wrote:
> From: Peilin Ye <[email protected]>
>
> We have btf_type_str(). Use it whenever possible in btf.c, instead of
> "btf_kind_str[BTF_INFO_KIND(t->info)]".
>
> Signed-off-by: Peilin Ye <[email protected]>
> ---
> kernel/bpf/btf.c | 14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c
> index cad4657ba2ce..81dc7423d723 100644

This clean up makes sense. The patch cannot be applied though [0], so
it is marked as 'Changes Requested'. Also, where is the cad4657ba2ce
coming from? It can't be found in the bpf-next tree. Please rebase on
the bpf-next and resend.


[0]:
https://patchwork.kernel.org/project/netdevbpf/patch/[email protected]/

2022-09-16 21:01:41

by Peilin Ye

[permalink] [raw]
Subject: Re: [PATCH bpf-next] bpf/btf: Use btf_type_str() whenever possible

On Fri, Sep 16, 2022 at 11:37:46AM -0700, Martin KaFai Lau wrote:
> This clean up makes sense. The patch cannot be applied though [0], so it is
> marked as 'Changes Requested'. Also, where is the cad4657ba2ce coming from?
> It can't be found in the bpf-next tree. Please rebase on the bpf-next and
> resend.

Ah, I will fix it in v2 soon.

Thanks,
Peilin Ye

2022-09-16 21:02:26

by Peilin Ye

[permalink] [raw]
Subject: [PATCH bpf-next v2] bpf/btf: Use btf_type_str() whenever possible

From: Peilin Ye <[email protected]>

We have btf_type_str(). Use it whenever possible in btf.c, instead of
"btf_kind_str[BTF_INFO_KIND(t->info)]".

Signed-off-by: Peilin Ye <[email protected]>
---
change since v1:
- rebase on bpf-next (Martin KaFai Lau)
- also use btf_type_str() in __btf_verifier_log_type()

kernel/bpf/btf.c | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c
index 98be25d13325..b3940c605aac 100644
--- a/kernel/bpf/btf.c
+++ b/kernel/bpf/btf.c
@@ -1397,7 +1397,6 @@ __printf(4, 5) static void __btf_verifier_log_type(struct btf_verifier_env *env,
const char *fmt, ...)
{
struct bpf_verifier_log *log = &env->log;
- u8 kind = BTF_INFO_KIND(t->info);
struct btf *btf = env->btf;
va_list args;

@@ -1413,7 +1412,7 @@ __printf(4, 5) static void __btf_verifier_log_type(struct btf_verifier_env *env,

__btf_verifier_log(log, "[%u] %s %s%s",
env->log_type_id,
- btf_kind_str[kind],
+ btf_type_str(t),
__btf_name_by_offset(btf, t->name_off),
log_details ? " " : "");

@@ -5427,7 +5426,7 @@ bool btf_ctx_access(int off, int size, enum bpf_access_type type,
if (!btf_type_is_small_int(t)) {
bpf_log(log,
"ret type %s not allowed for fmod_ret\n",
- btf_kind_str[BTF_INFO_KIND(t->info)]);
+ btf_type_str(t));
return false;
}
break;
@@ -5454,7 +5453,7 @@ bool btf_ctx_access(int off, int size, enum bpf_access_type type,
"func '%s' arg%d '%s' has type %s. Only pointer access is allowed\n",
tname, arg,
__btf_name_by_offset(btf, t->name_off),
- btf_kind_str[BTF_INFO_KIND(t->info)]);
+ btf_type_str(t));
return false;
}

@@ -5538,11 +5537,11 @@ bool btf_ctx_access(int off, int size, enum bpf_access_type type,
if (!btf_type_is_struct(t)) {
bpf_log(log,
"func '%s' arg%d type %s is not a struct\n",
- tname, arg, btf_kind_str[BTF_INFO_KIND(t->info)]);
+ tname, arg, btf_type_str(t));
return false;
}
bpf_log(log, "func '%s' arg%d has btf_id %d type %s '%s'\n",
- tname, arg, info->btf_id, btf_kind_str[BTF_INFO_KIND(t->info)],
+ tname, arg, info->btf_id, btf_type_str(t),
__btf_name_by_offset(btf, t->name_off));
return true;
}
@@ -5950,7 +5949,7 @@ int btf_distill_func_proto(struct bpf_verifier_log *log,
if (ret < 0 || __btf_type_is_struct(t)) {
bpf_log(log,
"The function %s return type %s is unsupported.\n",
- tname, btf_kind_str[BTF_INFO_KIND(t->info)]);
+ tname, btf_type_str(t));
return -EINVAL;
}
m->ret_size = ret;
@@ -5968,7 +5967,7 @@ int btf_distill_func_proto(struct bpf_verifier_log *log,
if (ret < 0 || ret > 16) {
bpf_log(log,
"The function %s arg%d type %s is unsupported.\n",
- tname, i, btf_kind_str[BTF_INFO_KIND(t->info)]);
+ tname, i, btf_type_str(t));
return -EINVAL;
}
if (ret == 0) {
@@ -6727,7 +6726,7 @@ int btf_prepare_func_args(struct bpf_verifier_env *env, int subprog,
continue;
}
bpf_log(log, "Arg#%d type %s in %s() is not supported yet.\n",
- i, btf_kind_str[BTF_INFO_KIND(t->info)], tname);
+ i, btf_type_str(t), tname);
return -EINVAL;
}
return 0;
--
2.20.1

2022-09-17 01:07:34

by patchwork-bot+netdevbpf

[permalink] [raw]
Subject: Re: [PATCH bpf-next v2] bpf/btf: Use btf_type_str() whenever possible

Hello:

This patch was applied to bpf/bpf-next.git (master)
by Martin KaFai Lau <[email protected]>:

On Fri, 16 Sep 2022 13:28:00 -0700 you wrote:
> From: Peilin Ye <[email protected]>
>
> We have btf_type_str(). Use it whenever possible in btf.c, instead of
> "btf_kind_str[BTF_INFO_KIND(t->info)]".
>
> Signed-off-by: Peilin Ye <[email protected]>
>
> [...]

Here is the summary with links:
- [bpf-next,v2] bpf/btf: Use btf_type_str() whenever possible
https://git.kernel.org/bpf/bpf-next/c/571f9738bfb3

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html