From 22bbd2b0b7d688663e2f020c83cd804e538700aa Mon Sep 17 00:00:00 2001 From: Jiri Olsa Date: Sun, 4 Feb 2024 21:45:58 +0000 Subject: [PATCH] tetragon: Make killer_data map policy specific Signed-off-by: Jiri Olsa --- pkg/sensors/tracing/generickprobe.go | 10 ++++++---- pkg/sensors/tracing/generictracepoint.go | 4 +++- pkg/sensors/tracing/killer.go | 6 ++++-- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/pkg/sensors/tracing/generickprobe.go b/pkg/sensors/tracing/generickprobe.go index 4964a6505c5..94e32340d62 100644 --- a/pkg/sensors/tracing/generickprobe.go +++ b/pkg/sensors/tracing/generickprobe.go @@ -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 @@ -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)) @@ -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) } @@ -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 { diff --git a/pkg/sensors/tracing/generictracepoint.go b/pkg/sensors/tracing/generictracepoint.go index 7a3c281b669..439455fecac 100644 --- a/pkg/sensors/tracing/generictracepoint.go +++ b/pkg/sensors/tracing/generictracepoint.go @@ -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) diff --git a/pkg/sensors/tracing/killer.go b/pkg/sensors/tracing/killer.go index 81b6c765ee7..2ef041ea953 100644 --- a/pkg/sensors/tracing/killer.go +++ b/pkg/sensors/tracing/killer.go @@ -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 @@ -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 { @@ -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 {