Skip to content

Commit

Permalink
tetragon: Cleanup progs/maps after failed sensor load
Browse files Browse the repository at this point in the history
Currently we do not unload progs/maps that were loaded prior
the fail to load the sensor for some reason, fixing that.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
  • Loading branch information
olsajiri committed Oct 3, 2024
1 parent 78d10e0 commit 48c23bd
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions pkg/sensors/load.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,10 +117,21 @@ func (s *Sensor) Load(bpfDir string) (err error) {
return fmt.Errorf("tetragon, aborting minimum requirements not met: %w", err)
}

var (
loadedMaps []*program.Map
loadedProgs []*program.Program
)

s.createDirs(bpfDir)
defer func() {
if err != nil {
s.removeDirs()
for _, m := range loadedMaps {
m.Unload()
}
for _, p := range loadedProgs {
unloadProgram(p)
}
}
}()

Expand All @@ -142,6 +153,7 @@ func (s *Sensor) Load(bpfDir string) (err error) {
if err = s.loadMap(bpfDir, m); err != nil {
return fmt.Errorf("tetragon, aborting could not load sensor BPF maps: %w", err)
}
loadedMaps = append(loadedMaps, m)
}

for _, p := range s.Progs {
Expand All @@ -155,6 +167,7 @@ func (s *Sensor) Load(bpfDir string) (err error) {
return err
}
p.LoadState.RefInc()
loadedProgs = append(loadedProgs, p)
l.WithField("prog", p.Name).WithField("label", p.Label).Debugf("BPF prog was loaded")
}

Expand Down

0 comments on commit 48c23bd

Please sign in to comment.