diff --git a/cmd/tetragon/main.go b/cmd/tetragon/main.go index 348ed6d57e8..af2df0d6504 100644 --- a/cmd/tetragon/main.go +++ b/cmd/tetragon/main.go @@ -427,7 +427,7 @@ func tetragonExecute() error { // load base sensor base := base.GetInitialSensor() - if err := base.Load(observerDir, observerDir); err != nil { + if err := base.Load(observerDir); err != nil { return err } defer func() { diff --git a/pkg/bench/bench.go b/pkg/bench/bench.go index 41eb162e341..ad4f4f0a114 100644 --- a/pkg/bench/bench.go +++ b/pkg/bench/bench.go @@ -126,11 +126,11 @@ func runTetragon(ctx context.Context, configFile string, args *Arguments, summar baseSensors := base.GetInitialSensor() - if err := baseSensors.Load(option.Config.BpfDir, option.Config.MapDir); err != nil { + if err := baseSensors.Load(option.Config.BpfDir); err != nil { log.Fatalf("Load base error: %s\n", err) } - if err := benchSensors.Load(option.Config.BpfDir, option.Config.MapDir); err != nil { + if err := benchSensors.Load(option.Config.BpfDir); err != nil { log.Fatalf("Load sensors error: %s\n", err) } diff --git a/pkg/observer/observertesthelper/observer_test_helper.go b/pkg/observer/observertesthelper/observer_test_helper.go index 1407d5ba80c..91dba70818e 100644 --- a/pkg/observer/observertesthelper/observer_test_helper.go +++ b/pkg/observer/observertesthelper/observer_test_helper.go @@ -434,7 +434,7 @@ func loadExporter(tb testing.TB, ctx context.Context, obs *observer.Observer, op func loadObserver(tb testing.TB, ctx context.Context, base *sensors.Sensor, tp tracingpolicy.TracingPolicy) error { - if err := base.Load(option.Config.BpfDir, option.Config.MapDir); err != nil { + if err := base.Load(option.Config.BpfDir); err != nil { tb.Fatalf("Load base error: %s\n", err) } @@ -452,11 +452,11 @@ func loadObserver(tb testing.TB, ctx context.Context, base *sensors.Sensor, } func loadSensor(tb testing.TB, base *sensors.Sensor, sens *sensors.Sensor) error { - if err := base.Load(option.Config.BpfDir, option.Config.MapDir); err != nil { + if err := base.Load(option.Config.BpfDir); err != nil { tb.Fatalf("Load base error: %s\n", err) } - if err := sens.Load(option.Config.BpfDir, option.Config.MapDir); err != nil { + if err := sens.Load(option.Config.BpfDir); err != nil { tb.Fatalf("LoadConfig error: %s\n", err) } return nil diff --git a/pkg/sensors/collection.go b/pkg/sensors/collection.go index 06b5e6b1980..42f1b38894f 100644 --- a/pkg/sensors/collection.go +++ b/pkg/sensors/collection.go @@ -35,7 +35,7 @@ func (c *collection) info() string { // load will attempt to load a collection of sensors. If loading one of the sensors fails, it // will attempt to unload the already loaded sensors. -func (c *collection) load(bpfDir, mapDir string) error { +func (c *collection) load(bpfDir string) error { var err error for _, sensor := range c.sensors { @@ -44,7 +44,7 @@ func (c *collection) load(bpfDir, mapDir string) error { // because that would complicate things. continue } - if err = sensor.Load(bpfDir, mapDir); err != nil { + if err = sensor.Load(bpfDir); err != nil { err = fmt.Errorf("sensor %s from collection %s failed to load: %s", sensor.Name, c.name, err) break } diff --git a/pkg/sensors/exec/exec_test.go b/pkg/sensors/exec/exec_test.go index 10f7bb8a124..a87e14d22dc 100644 --- a/pkg/sensors/exec/exec_test.go +++ b/pkg/sensors/exec/exec_test.go @@ -512,7 +512,7 @@ func TestLoadInitialSensor(t *testing.T) { option.Config.HubbleLib = tus.Conf().TetragonLib t.Logf("Loading sensor %v\n", sensor.Name) - if err := sensor.Load(bpf.MapPrefixPath(), bpf.MapPrefixPath()); err != nil { + if err := sensor.Load(bpf.MapPrefixPath()); err != nil { t.Fatalf("sensor.Load failed: %v\n", err) } diff --git a/pkg/sensors/handler.go b/pkg/sensors/handler.go index 60690423d8e..e63d22bf6fc 100644 --- a/pkg/sensors/handler.go +++ b/pkg/sensors/handler.go @@ -15,8 +15,8 @@ import ( type handler struct { // map of sensor collections: name -> collection - collections map[string]collection - bpfDir, mapDir string + collections map[string]collection + bpfDir string nextPolicyID uint64 pfState policyfilter.State @@ -24,11 +24,10 @@ type handler struct { func newHandler( pfState policyfilter.State, - bpfDir, mapDir string) (*handler, error) { + bpfDir string) (*handler, error) { return &handler{ collections: map[string]collection{}, bpfDir: bpfDir, - mapDir: mapDir, pfState: pfState, // NB: we are using policy ids for filtering, so we start with // the first valid id. This is because value 0 is reserved to @@ -120,7 +119,7 @@ func (h *handler) addTracingPolicy(op *tracingPolicyAdd) error { tracingpolicyID: uint64(tpID), policyfilterID: uint64(filterID), } - if err := col.load(h.bpfDir, h.mapDir); err != nil { + if err := col.load(h.bpfDir); err != nil { return err } col.enabled = true @@ -212,7 +211,7 @@ func (h *handler) enableTracingPolicy(op *tracingPolicyEnable) error { return fmt.Errorf("tracing policy %s is already enabled", op.name) } - if err := col.load(h.bpfDir, h.mapDir); err != nil { + if err := col.load(h.bpfDir); err != nil { return err } @@ -267,7 +266,7 @@ func (h *handler) enableSensor(op *sensorEnable) error { return fmt.Errorf("sensor %s does not exist", op.name) } - return col.load(h.bpfDir, h.mapDir) + return col.load(h.bpfDir) } func (h *handler) disableSensor(op *sensorDisable) error { diff --git a/pkg/sensors/load.go b/pkg/sensors/load.go index 3fb35f8241d..0570b506ac4 100644 --- a/pkg/sensors/load.go +++ b/pkg/sensors/load.go @@ -55,16 +55,16 @@ const ( ) // LoadConfig loads the default sensor, including any from the configuration file. -func LoadConfig(bpfDir, mapDir string, sens []*Sensor) error { +func LoadConfig(bpfDir string, sens []*Sensor) error { load := mergeSensors(sens) - if err := load.Load(bpfDir, mapDir); err != nil { + if err := load.Load(bpfDir); err != nil { return fmt.Errorf("tetragon, aborting could not load BPF programs: %w", err) } return nil } // Load loads the sensor, by loading all the BPF programs and maps. -func (s *Sensor) Load(bpfDir, mapDir string) error { +func (s *Sensor) Load(bpfDir string) error { if s == nil { return nil } @@ -82,7 +82,7 @@ func (s *Sensor) Load(bpfDir, mapDir string) error { return fmt.Errorf("tetragon, aborting minimum requirements not met: %w", err) } - createDir(bpfDir, mapDir) + os.Mkdir(bpfDir, os.ModeDir) l := logger.GetLogger() @@ -98,7 +98,7 @@ func (s *Sensor) Load(bpfDir, mapDir string) error { return fmt.Errorf("tetragon, aborting could not find BPF programs: %w", err) } - if err := s.loadMaps(mapDir); err != nil { + if err := s.loadMaps(bpfDir); err != nil { return fmt.Errorf("tetragon, aborting could not load sensor BPF maps: %w", err) } @@ -109,7 +109,7 @@ func (s *Sensor) Load(bpfDir, mapDir string) error { continue } - if err := observerLoadInstance(bpfDir, mapDir, p); err != nil { + if err := observerLoadInstance(bpfDir, p); err != nil { return err } p.LoadState.RefInc() @@ -209,7 +209,7 @@ func (s *Sensor) FindPrograms() error { } // loadMaps loads all the BPF maps in the sensor. -func (s *Sensor) loadMaps(mapDir string) error { +func (s *Sensor) loadMaps(bpfDir string) error { l := logger.GetLogger() for _, m := range s.Maps { if m.PinState.IsLoaded() { @@ -221,7 +221,7 @@ func (s *Sensor) loadMaps(mapDir string) error { continue } - pinPath := filepath.Join(mapDir, m.PinName) + pinPath := filepath.Join(bpfDir, m.PinName) spec, err := ebpf.LoadCollectionSpec(m.Prog.Name) if err != nil { @@ -271,7 +271,7 @@ func mergeSensors(sensors []*Sensor) *Sensor { } } -func observerLoadInstance(bpfDir, mapDir string, load *program.Program) error { +func observerLoadInstance(bpfDir string, load *program.Program) error { version, _, err := kernels.GetKernelVersion(option.Config.KernelVersion, option.Config.ProcFS) if err != nil { return err @@ -283,33 +283,33 @@ func observerLoadInstance(bpfDir, mapDir string, load *program.Program) error { "kern_version": version, }).Debug("observerLoadInstance", load.Name, version) if load.Type == "tracepoint" { - err = loadInstance(bpfDir, mapDir, load, version, option.Config.Verbosity) + err = loadInstance(bpfDir, load, version, option.Config.Verbosity) if err != nil { l.WithField( "tracepoint", load.Name, ).Info("Failed to load, trying to remove and retrying") load.Unload() - err = loadInstance(bpfDir, mapDir, load, version, option.Config.Verbosity) + err = loadInstance(bpfDir, load, version, option.Config.Verbosity) } if err != nil { return fmt.Errorf("failed prog %s kern_version %d LoadTracingProgram: %w", load.Name, version, err) } } else if load.Type == "raw_tracepoint" || load.Type == "raw_tp" { - err = loadInstance(bpfDir, mapDir, load, version, option.Config.Verbosity) + err = loadInstance(bpfDir, load, version, option.Config.Verbosity) if err != nil { l.WithField( "raw_tracepoint", load.Name, ).Info("Failed to load, trying to remove and retrying") load.Unload() - err = loadInstance(bpfDir, mapDir, load, version, option.Config.Verbosity) + err = loadInstance(bpfDir, load, version, option.Config.Verbosity) } if err != nil { return fmt.Errorf("failed prog %s kern_version %d LoadRawTracepointProgram: %w", load.Name, version, err) } } else { - err = loadInstance(bpfDir, mapDir, load, version, option.Config.Verbosity) + err = loadInstance(bpfDir, load, version, option.Config.Verbosity) if err != nil && load.ErrorFatal { return fmt.Errorf("failed prog %s kern_version %d loadInstance: %w", load.Name, version, err) @@ -318,7 +318,7 @@ func observerLoadInstance(bpfDir, mapDir string, load *program.Program) error { return nil } -func loadInstance(bpfDir, mapDir string, load *program.Program, version, verbose int) error { +func loadInstance(bpfDir string, load *program.Program, version, verbose int) error { version = kernels.FixKernelVersion(version) probe, ok := registeredProbeLoad[load.Type] if ok { @@ -363,11 +363,6 @@ func observerMinReqs() (bool, error) { return true, nil } -func createDir(bpfDir, mapDir string) { - os.Mkdir(bpfDir, os.ModeDir) - os.Mkdir(mapDir, os.ModeDir) -} - func unloadProgram(prog *program.Program) { log := logger.GetLogger().WithField("label", prog.Label).WithField("pin", prog.PinPath) diff --git a/pkg/sensors/manager.go b/pkg/sensors/manager.go index 5e4b7f75fd6..aa31ef6a9c3 100644 --- a/pkg/sensors/manager.go +++ b/pkg/sensors/manager.go @@ -41,7 +41,7 @@ func StartSensorManager( return nil, fmt.Errorf("failed to initialize policy filter state: %w", err) } - handler, err := newHandler(pfState, bpfDir, mapDir) + handler, err := newHandler(pfState, bpfDir) if err != nil { return nil, err } diff --git a/pkg/sensors/manager_test.go b/pkg/sensors/manager_test.go index 30eb6bfb492..7c6d56bc6e5 100644 --- a/pkg/sensors/manager_test.go +++ b/pkg/sensors/manager_test.go @@ -151,7 +151,7 @@ func TestPolicyFilterDisabled(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() - handler, err := newHandler(policyfilter.DisabledState(), "", "") + handler, err := newHandler(policyfilter.DisabledState(), "") assert.NoError(t, err) mgr, err := startSensorManager(handler, nil) assert.NoError(t, err) diff --git a/pkg/sensors/tracing/kprobe_test.go b/pkg/sensors/tracing/kprobe_test.go index 706e3d92417..15456cffd2e 100644 --- a/pkg/sensors/tracing/kprobe_test.go +++ b/pkg/sensors/tracing/kprobe_test.go @@ -113,7 +113,7 @@ spec: t.Fatalf("GetDefaultObserverWithFile error: %s", err) } initialSensor := base.GetInitialSensor() - initialSensor.Load(bpf.MapPrefixPath(), bpf.MapPrefixPath()) + initialSensor.Load(bpf.MapPrefixPath()) } // NB: This is similar to TestKprobeObjectWriteRead, but it's a bit easier to @@ -4175,7 +4175,7 @@ spec: if err != nil { return err } - err = sens.Load(option.Config.BpfDir, option.Config.MapDir) + err = sens.Load(option.Config.BpfDir) if err != nil { return err } diff --git a/pkg/testutils/sensors/sensors.go b/pkg/testutils/sensors/sensors.go index 6f7227bde3e..6e30930f34a 100644 --- a/pkg/testutils/sensors/sensors.go +++ b/pkg/testutils/sensors/sensors.go @@ -18,8 +18,8 @@ func LoadSensor(t *testing.T, sensor *sensors.Sensor) { if err := sensor.FindPrograms(); err != nil { t.Fatalf("ObserverFindProgs error: %s", err) } - mapDir := bpf.MapPrefixPath() - if err := sensor.Load(mapDir, mapDir); err != nil { + bpfDir := bpf.MapPrefixPath() + if err := sensor.Load(bpfDir); err != nil { t.Fatalf("observerLoadSensor error: %s", err) }