diff mbox series

[bpf-next] bpf: log struct/union attribute for forward type

Message ID 20181218214358.87636-1-yhs@fb.com
State Accepted, archived
Delegated to: BPF Maintainers
Headers show
Series [bpf-next] bpf: log struct/union attribute for forward type | expand

Commit Message

Yonghong Song Dec. 18, 2018, 9:43 p.m. UTC
Current btf internal verbose logger logs fwd type as
  [2] FWD A type_id=0
where A is the type name.

Commit 9d5f9f701b18 ("bpf: btf: fix struct/union/fwd types
with kind_flag") introduced kind_flag which can be used
to distinguish whether a forward type is a struct or
union.

Also, "type_id=0" does not carry any meaningful
information for fwd type as btf_type.type = 0 is simply
enforced during btf verification and is not used
anywhere else.

This commit changed the log to
  [2] FWD A struct
if kind_flag = 0, or
  [2] FWD A union
if kind_flag = 1.

Acked-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Yonghong Song <yhs@fb.com>
---
 kernel/bpf/btf.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Comments

Daniel Borkmann Dec. 18, 2018, 11:49 p.m. UTC | #1
On 12/18/2018 10:43 PM, Yonghong Song wrote:
> Current btf internal verbose logger logs fwd type as
>   [2] FWD A type_id=0
> where A is the type name.
> 
> Commit 9d5f9f701b18 ("bpf: btf: fix struct/union/fwd types
> with kind_flag") introduced kind_flag which can be used
> to distinguish whether a forward type is a struct or
> union.
> 
> Also, "type_id=0" does not carry any meaningful
> information for fwd type as btf_type.type = 0 is simply
> enforced during btf verification and is not used
> anywhere else.
> 
> This commit changed the log to
>   [2] FWD A struct
> if kind_flag = 0, or
>   [2] FWD A union
> if kind_flag = 1.
> 
> Acked-by: Martin KaFai Lau <kafai@fb.com>
> Signed-off-by: Yonghong Song <yhs@fb.com>

Applied, thanks!
diff mbox series

Patch

diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c
index e804b26a0506..715f9fcf4712 100644
--- a/kernel/bpf/btf.c
+++ b/kernel/bpf/btf.c
@@ -1595,12 +1595,18 @@  static s32 btf_fwd_check_meta(struct btf_verifier_env *env,
 	return 0;
 }
 
+static void btf_fwd_type_log(struct btf_verifier_env *env,
+			     const struct btf_type *t)
+{
+	btf_verifier_log(env, "%s", btf_type_kflag(t) ? "union" : "struct");
+}
+
 static struct btf_kind_operations fwd_ops = {
 	.check_meta = btf_fwd_check_meta,
 	.resolve = btf_df_resolve,
 	.check_member = btf_df_check_member,
 	.check_kflag_member = btf_df_check_kflag_member,
-	.log_details = btf_ref_type_log,
+	.log_details = btf_fwd_type_log,
 	.seq_show = btf_df_seq_show,
 };