Skip to content

Commit f56102b

Browse files
tetragon: Plumb resolve error from bpf to event
A depth of 0 indicates no resolve error. Any non-zero value indicates the depth at which the resolution failed. Signed-off-by: Andy Strohman <[email protected]>
1 parent 04f3dae commit f56102b

File tree

2 files changed

+32
-17
lines changed

2 files changed

+32
-17
lines changed

pkg/api/tracingapi/client_kprobe.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,17 +47,18 @@ type MsgLoader struct {
4747
}
4848

4949
type MsgGenericKprobe struct {
50-
Common processapi.MsgCommon
51-
ProcessKey processapi.MsgExecveKey
52-
Namespaces processapi.MsgNamespaces
53-
Capabilities processapi.MsgCapabilities
54-
FuncId uint64
55-
RetProbeId uint64
56-
ActionId uint64
57-
ActionArgId uint32
58-
Tid uint32 // The recorded TID that triggered the event
59-
KernelStackID int64
60-
UserStackID int64
50+
Common processapi.MsgCommon
51+
ProcessKey processapi.MsgExecveKey
52+
Namespaces processapi.MsgNamespaces
53+
Capabilities processapi.MsgCapabilities
54+
FuncId uint64
55+
RetProbeId uint64
56+
ActionId uint64
57+
ActionArgId uint32
58+
Tid uint32 // The recorded TID that triggered the event
59+
KernelStackID int64
60+
UserStackID int64
61+
ResolveErrDepth [EventConfigMaxArgs]int32
6162
}
6263

6364
type MsgGenericKprobeArgPath struct {

pkg/grpc/tracing/tracing.go

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -348,11 +348,14 @@ func GetProcessKprobe(event *MsgGenericKprobeUnix) *tetragon.ProcessKprobe {
348348
}
349349
}
350350

351-
for _, arg := range event.Args {
351+
for i, arg := range event.Args {
352352
a := getKprobeArgument(arg)
353353
if arg.IsReturnArg() {
354354
tetragonReturnArg = a
355355
} else {
356+
if config.EnableLargeProgs() {
357+
a.ResolveErrDepth = event.Msg.ResolveErrDepth[i]
358+
}
356359
tetragonArgs = append(tetragonArgs, a)
357360
}
358361
}
@@ -884,8 +887,12 @@ func GetProcessUprobe(event *MsgGenericUprobeUnix) *tetragon.ProcessUprobe {
884887
}
885888
}
886889

887-
for _, arg := range event.Args {
888-
tetragonArgs = append(tetragonArgs, getKprobeArgument(arg))
890+
for i, arg := range event.Args {
891+
a := getKprobeArgument(arg)
892+
if config.EnableLargeProgs() {
893+
a.ResolveErrDepth = event.Msg.ResolveErrDepth[i]
894+
}
895+
tetragonArgs = append(tetragonArgs, a)
889896
}
890897

891898
for _, data := range event.Data {
@@ -996,8 +1003,12 @@ func GetProcessUsdt(event *MsgGenericUsdtUnix) *tetragon.ProcessUsdt {
9961003
}
9971004
}
9981005

999-
for _, arg := range event.Args {
1000-
tetragonArgs = append(tetragonArgs, getKprobeArgument(arg))
1006+
for i, arg := range event.Args {
1007+
a := getKprobeArgument(arg)
1008+
if config.EnableLargeProgs() {
1009+
a.ResolveErrDepth = event.Msg.ResolveErrDepth[i]
1010+
}
1011+
tetragonArgs = append(tetragonArgs, a)
10011012
}
10021013

10031014
tetragonEvent := &tetragon.ProcessUsdt{
@@ -1122,8 +1133,11 @@ func GetProcessLsm(event *MsgGenericLsmUnix) *tetragon.ProcessLsm {
11221133
}
11231134
}
11241135

1125-
for _, arg := range event.Args {
1136+
for i, arg := range event.Args {
11261137
a := getKprobeArgument(arg)
1138+
if config.EnableLargeProgs() {
1139+
a.ResolveErrDepth = event.Msg.ResolveErrDepth[i]
1140+
}
11271141
tetragonArgs = append(tetragonArgs, a)
11281142
}
11291143

0 commit comments

Comments
 (0)