Skip to content

Commit

Permalink
tetragon: Make killer_data map policy specific
Browse files Browse the repository at this point in the history
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
  • Loading branch information
olsajiri committed Feb 4, 2024
1 parent b7e75b3 commit 22bbd2b
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 7 deletions.
10 changes: 6 additions & 4 deletions pkg/sensors/tracing/generickprobe.go
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ func filterMaps(load *program.Program, pinPath string, kprobeEntry *genericKprob
return maps
}

func createMultiKprobeSensor(sensorPath string, multiIDs []idtable.EntryID) ([]*program.Program, []*program.Map, error) {
func createMultiKprobeSensor(sensorPath, policyName string, multiIDs []idtable.EntryID) ([]*program.Program, []*program.Map, error) {
var multiRetIDs []idtable.EntryID
var progs []*program.Program
var maps []*program.Map
Expand Down Expand Up @@ -311,7 +311,8 @@ func createMultiKprobeSensor(sensorPath string, multiIDs []idtable.EntryID) ([]*
maps = append(maps, socktrack)
}

killerDataMap := program.MapBuilderPin(killerDataMapName, killerDataMapName, load)
killerDataMap := program.MapBuilderPin(killerDataMapName,
fmt.Sprintf("%s_%s", killerDataMapName, policyName), load)
maps = append(maps, killerDataMap)

filterMap.SetMaxEntries(len(multiIDs))
Expand Down Expand Up @@ -557,7 +558,7 @@ func createGenericKprobeSensor(
}

if useMulti {
progs, maps, err = createMultiKprobeSensor(in.sensorPath, ids)
progs, maps, err = createMultiKprobeSensor(in.sensorPath, in.policyName, ids)
} else {
progs, maps, err = createSingleKprobeSensor(in.sensorPath, ids)
}
Expand Down Expand Up @@ -861,7 +862,8 @@ func createKprobeSensorFromEntry(kprobeEntry *genericKprobe, sensorPath string,
maps = append(maps, socktrack)
}

killerDataMap := program.MapBuilderPin(killerDataMapName, killerDataMapName, load)
killerDataMap := program.MapBuilderPin(killerDataMapName,
fmt.Sprintf("%s_%s", killerDataMapName, kprobeEntry.policyName), load)
maps = append(maps, killerDataMap)

if kprobeEntry.loadArgs.retprobe {
Expand Down
4 changes: 3 additions & 1 deletion pkg/sensors/tracing/generictracepoint.go
Original file line number Diff line number Diff line change
Expand Up @@ -466,7 +466,9 @@ func createGenericTracepointSensor(
}
maps = append(maps, matchBinariesPaths)

killerDataMap := program.MapBuilderPin("killer_data", "killer_data", prog0)
killerDataMap := program.MapBuilderPin(killerDataMapName,
fmt.Sprintf("%s_%s", killerDataMapName, policyName), prog0)

maps = append(maps, killerDataMap)

selMatchBinariesMap := program.MapBuilderPin("tg_mb_sel_opts", sensors.PathJoin(pinPath, "tg_mb_sel_opts"), prog0)
Expand Down
6 changes: 4 additions & 2 deletions pkg/sensors/tracing/killer.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ func (kp *killerPolicy) PolicyHandler(
}
if len(spec.Killers) > 0 {
name := fmt.Sprintf("killer-sensor-%d", atomic.AddUint64(&sensorCounter, 1))
return kp.createKillerSensor(spec.Killers, spec.Lists, spec.Options, name)
return kp.createKillerSensor(spec.Killers, spec.Lists, spec.Options, name, policy.TpName())
}

return nil, nil
Expand Down Expand Up @@ -182,6 +182,7 @@ func (kp *killerPolicy) createKillerSensor(
lists []v1alpha1.ListSpec,
opts []v1alpha1.OptionSpec,
name string,
policyName string,
) (*sensors.Sensor, error) {

if len(killers) > 1 {
Expand Down Expand Up @@ -309,7 +310,8 @@ func (kp *killerPolicy) createKillerSensor(
return nil, fmt.Errorf("unexpected override method: %d", overrideMethod)
}

killerDataMap := program.MapBuilderPin(killerDataMapName, killerDataMapName, load)
killerDataMap := program.MapBuilderPin(killerDataMapName,
fmt.Sprintf("%s_%s", killerDataMapName, policyName), load)
maps = append(maps, killerDataMap)

if ok := kp.killerAdd(name, kh); !ok {
Expand Down

0 comments on commit 22bbd2b

Please sign in to comment.