From ec630fe8ffb355d27286c6c3fbc711e32c955646 Mon Sep 17 00:00:00 2001 From: Jiri Olsa Date: Sun, 21 Jan 2024 13:32:20 +0000 Subject: [PATCH] tetragon: Add more types to btf validation Signed-off-by: Jiri Olsa --- pkg/btf/validation.go | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/pkg/btf/validation.go b/pkg/btf/validation.go index 8d614ac3fbe..9eb131ee1c2 100644 --- a/pkg/btf/validation.go +++ b/pkg/btf/validation.go @@ -126,8 +126,13 @@ func ValidateKprobeSpec(bspec *btf.Spec, call string, kspec *v1alpha1.KProbeSpec func getKernelType(arg btf.Type) string { suffix := "" ptr, ok := arg.(*btf.Pointer) + if ok { arg = ptr.Target + _, ok = arg.(*btf.Void) + if ok { + return "void *" + } suffix = suffix + " *" } num, ok := arg.(*btf.Int) @@ -144,14 +149,39 @@ func getKernelType(arg btf.Type) string { func typesCompatible(specTy string, kernelTy string) bool { switch specTy { + case "uint64": + switch kernelTy { + case "u64", "void *": + return true + } + case "int64": + switch kernelTy { + case "s64": + return true + } + case "int16": + switch kernelTy { + case "s16", "short int": + return true + } + case "uint16": + switch kernelTy { + case "u16", "short uint": + return true + } + case "uint8": + switch kernelTy { + case "u8", "unsigned char": + return true + } case "size_t": switch kernelTy { case "size_t": return true } - case "char_buf", "string": + case "char_buf", "string", "int8": switch kernelTy { - case "const char *", "char *": + case "const char *", "char *", "char": return true } case "char_iovec":