From 2d3a4d0232b1502ffb49010406916bca5fe693c5 Mon Sep 17 00:00:00 2001 From: Jiri Olsa Date: Tue, 20 Aug 2024 07:48:20 +0000 Subject: [PATCH] tetragon: Remove install tail call machinery Signed-off-by: Jiri Olsa --- pkg/sensors/program/loader.go | 43 ---------------------------------- pkg/sensors/program/program.go | 10 -------- 2 files changed, 53 deletions(-) diff --git a/pkg/sensors/program/loader.go b/pkg/sensors/program/loader.go index 36ef61c2c68..ac801aff32b 100644 --- a/pkg/sensors/program/loader.go +++ b/pkg/sensors/program/loader.go @@ -702,44 +702,6 @@ func slimVerifierError(errStr string) string { return errStr[:headEnd] + "\n...\n" + errStr[tailStart:] } -func installTailCalls(bpfDir string, spec *ebpf.CollectionSpec, coll *ebpf.Collection, load *Program) error { - // FIXME(JM): This should be replaced by using the cilium/ebpf prog array initialization. - - secToProgName := make(map[string]string) - for name, prog := range spec.Programs { - secToProgName[prog.SectionName] = name - } - - install := func(pinPath string, secPrefix string) error { - tailCallsMap, err := ebpf.LoadPinnedMap(filepath.Join(bpfDir, pinPath), nil) - if err != nil { - return nil - } - defer tailCallsMap.Close() - - for i := 0; i < 13; i++ { - secName := fmt.Sprintf("%s/%d", secPrefix, i) - if progName, ok := secToProgName[secName]; ok { - if prog, ok := coll.Programs[progName]; ok { - err := tailCallsMap.Update(uint32(i), uint32(prog.FD()), ebpf.UpdateAny) - if err != nil { - return fmt.Errorf("update of tail-call map '%s' failed: %w", pinPath, err) - } - } - } - } - return nil - } - - if load.TcMap != nil { - if err := install(load.TcMap.PinName, load.TcPrefix); err != nil { - return err - } - } - - return nil -} - func doLoadProgram( bpfDir string, load *Program, @@ -883,11 +845,6 @@ func doLoadProgram( } } - err = installTailCalls(bpfDir, spec, coll, load) - if err != nil { - return nil, fmt.Errorf("installing tail calls failed: %s", err) - } - for _, mapLoad := range load.MapLoad { if m, ok := coll.Maps[mapLoad.Name]; ok { if err := mapLoad.Load(m, mapLoad.Index); err != nil { diff --git a/pkg/sensors/program/program.go b/pkg/sensors/program/program.go index e52cc796761..5b84a7b5b22 100644 --- a/pkg/sensors/program/program.go +++ b/pkg/sensors/program/program.go @@ -121,10 +121,6 @@ type Program struct { // Type information used for CO-RE relocations. KernelTypes *btf.Spec - // Tail call prefix/map - TcPrefix string - TcMap *Map - Link link.Link Prog *ebpf.Program @@ -147,12 +143,6 @@ func (p *Program) SetAttachData(d interface{}) *Program { return p } -func (p *Program) SetTailCall(prefix string, m *Map) *Program { - p.TcPrefix = prefix - p.TcMap = m - return p -} - func (p *Program) SetPolicy(policy string) *Program { p.Policy = policy return p