Skip to content

Commit a98d74e

Browse files
committed
uprobe/kprobe: Add setupCelExpr and use it to setup cel expression
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
1 parent f4795e1 commit a98d74e

3 files changed

Lines changed: 19 additions & 32 deletions

File tree

pkg/sensors/tracing/generic.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,12 @@ import (
1010
"fmt"
1111
"strings"
1212

13+
"github.com/cilium/ebpf"
1314
ebtf "github.com/cilium/ebpf/btf"
1415

16+
"github.com/cilium/tetragon/pkg/celbpf"
1517
"github.com/cilium/tetragon/pkg/k8s/apis/cilium.io/v1alpha1"
18+
"github.com/cilium/tetragon/pkg/sensors/program"
1619

1720
api "github.com/cilium/tetragon/pkg/api/tracingapi"
1821
"github.com/cilium/tetragon/pkg/btf"
@@ -308,3 +311,15 @@ func useMacro[T any](filters []T, macrosFilters []T) ([]T, error) {
308311
}
309312
return append(filters, macrosFilters...), nil
310313
}
314+
315+
func setupCelExpr(load *program.Program, selectors kprobeSelectors, fn string) {
316+
if !celbpf.EnabledInBPF() || load.RewriteProg != nil {
317+
return
318+
}
319+
320+
rewriteProg := make(map[string]func(prog *ebpf.ProgramSpec) error)
321+
if entry := selectors.entry; entry != nil {
322+
rewriteProg[fn] = entry.CelExprFunctions().RewriteProg
323+
load.RewriteProg = rewriteProg
324+
}
325+
}

pkg/sensors/tracing/generickprobe.go

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import (
3030
"github.com/cilium/tetragon/pkg/asm"
3131
"github.com/cilium/tetragon/pkg/bpf"
3232
"github.com/cilium/tetragon/pkg/btf"
33-
"github.com/cilium/tetragon/pkg/celbpf"
3433
"github.com/cilium/tetragon/pkg/cgtracker"
3534
"github.com/cilium/tetragon/pkg/config"
3635
"github.com/cilium/tetragon/pkg/eventhandler"
@@ -1220,13 +1219,7 @@ func loadSingleKprobeSensor(id idtable.EntryID, bpfDir string, load *program.Pro
12201219
return err
12211220
}
12221221

1223-
rewriteProg := make(map[string]func(prog *ebpf.ProgramSpec) error)
1224-
if entry := gk.loadArgs.selectors.entry; entry != nil {
1225-
if celbpf.EnabledInBPF() {
1226-
rewriteProg["generic_kprobe_filter_arg"] = entry.CelExprFunctions().RewriteProg
1227-
}
1228-
}
1229-
load.RewriteProg = rewriteProg
1222+
setupCelExpr(load, gk.loadArgs.selectors, "generic_kprobe_filter_arg")
12301223

12311224
load.MapLoad = append(load.MapLoad, getMapLoad(load, gk, 0)...)
12321225

@@ -1264,13 +1257,7 @@ func loadMultiKprobeSensor(ids []idtable.EntryID, bpfDir string, load *program.P
12641257
return err
12651258
}
12661259

1267-
rewriteProg := make(map[string]func(prog *ebpf.ProgramSpec) error)
1268-
if entry := gk.loadArgs.selectors.entry; entry != nil {
1269-
if celbpf.EnabledInBPF() {
1270-
rewriteProg["generic_kprobe_filter_arg"] = entry.CelExprFunctions().RewriteProg
1271-
}
1272-
}
1273-
load.RewriteProg = rewriteProg
1260+
setupCelExpr(load, gk.loadArgs.selectors, "generic_kprobe_filter_arg")
12741261

12751262
load.MapLoad = append(load.MapLoad, getMapLoad(load, gk, uint32(index))...)
12761263

pkg/sensors/tracing/genericuprobe.go

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import (
1919
"github.com/cilium/ebpf"
2020
lru "github.com/hashicorp/golang-lru/v2"
2121

22-
"github.com/cilium/tetragon/pkg/celbpf"
2322
"github.com/cilium/tetragon/pkg/cgtracker"
2423

2524
"github.com/cilium/tetragon/pkg/asm"
@@ -203,13 +202,7 @@ func handleGenericUprobe(r *bytes.Reader) ([]observer.Event, error) {
203202
func loadSingleUprobeSensor(uprobeEntry *genericUprobe, args sensors.LoadProbeArgs) error {
204203
load := args.Load
205204

206-
rewriteProg := make(map[string]func(prog *ebpf.ProgramSpec) error)
207-
if entry := uprobeEntry.loadArgs.selectors.entry; entry != nil {
208-
if celbpf.EnabledInBPF() {
209-
rewriteProg["generic_uprobe_filter_arg"] = entry.CelExprFunctions().RewriteProg
210-
}
211-
}
212-
load.RewriteProg = rewriteProg
205+
setupCelExpr(load, uprobeEntry.loadArgs.selectors, "generic_uprobe_filter_arg")
213206

214207
// config_map data
215208
var configData bytes.Buffer
@@ -318,15 +311,7 @@ func loadMultiUprobeSensor(ids []idtable.EntryID, args sensors.LoadProbeArgs) er
318311
return errors.New("failed to match id")
319312
}
320313

321-
rewriteProg := make(map[string]func(prog *ebpf.ProgramSpec) error)
322-
323-
if entry := uprobeEntry.loadArgs.selectors.entry; entry != nil {
324-
if celbpf.EnabledInBPF() {
325-
rewriteProg["generic_uprobe_filter_arg"] = entry.CelExprFunctions().RewriteProg
326-
}
327-
}
328-
329-
load.RewriteProg = rewriteProg
314+
setupCelExpr(load, uprobeEntry.loadArgs.selectors, "generic_uprobe_filter_arg")
330315

331316
// config_map data
332317
var configData bytes.Buffer

0 commit comments

Comments
 (0)