Skip to content

Commit 642f3f4

Browse files
committed
perf: Use kprobe for dup,dup2,dup3,socket_dup
1 parent ff26d07 commit 642f3f4

File tree

4 files changed

+29
-30
lines changed

4 files changed

+29
-30
lines changed

pkg/ebpf/c/tracee.bpf.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,9 @@ int trace_sys_exit(struct bpf_raw_tracepoint_args *ctx)
362362
TRACE_SYSCALL(ptrace, SYSCALL_PTRACE)
363363
TRACE_SYSCALL(process_vm_writev, SYSCALL_PROCESS_VM_WRITEV)
364364
TRACE_SYSCALL(arch_prctl, SYSCALL_ARCH_PRCTL)
365+
TRACE_SYSCALL(dup, SYSCALL_DUP)
366+
TRACE_SYSCALL(dup2, SYSCALL_DUP2)
367+
TRACE_SYSCALL(dup3, SYSCALL_DUP3)
365368

366369
SEC("raw_tracepoint/sys_execve")
367370
int syscall__execve_enter(void *ctx)
@@ -536,7 +539,7 @@ statfunc int send_socket_dup(program_data_t *p, u64 oldfd, u64 newfd)
536539
return events_perf_submit(p, 0);
537540
}
538541

539-
SEC("raw_tracepoint/sys_dup")
542+
SEC("kprobe/sys_dup")
540543
int sys_dup_exit_tail(void *ctx)
541544
{
542545
program_data_t p = {};

pkg/ebpf/probes/probe_group.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,12 @@ func NewDefaultProbeGroup(module *bpf.Module, netEnabled bool) (*ProbeGroup, err
230230
ProcessVmWritevRet: NewTraceProbe(SyscallExit, "process_vm_writev", "trace_ret_process_vm_writev"),
231231
ArchPrctl: NewTraceProbe(SyscallEnter, "arch_prctl", "trace_arch_prctl"),
232232
ArchPrctlRet: NewTraceProbe(SyscallExit, "arch_prctl", "trace_ret_arch_prctl"),
233+
Dup: NewTraceProbe(SyscallEnter, "dup", "trace_dup"),
234+
DupRet: NewTraceProbe(SyscallExit, "dup", "trace_ret_dup"),
235+
Dup2: NewTraceProbe(SyscallEnter, "dup2", "trace_dup2"),
236+
Dup2Ret: NewTraceProbe(SyscallExit, "dup2", "trace_ret_dup2"),
237+
Dup3: NewTraceProbe(SyscallEnter, "dup3", "trace_dup3"),
238+
Dup3Ret: NewTraceProbe(SyscallExit, "dup3", "trace_ret_dup3"),
233239

234240
TestUnavailableHook: NewTraceProbe(KProbe, "non_existing_func", "empty_kprobe"),
235241
ExecTest: NewTraceProbe(RawTracepoint, "raw_syscalls:sched_process_exec", "tracepoint__exec_test"),

pkg/ebpf/probes/probes.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,12 @@ const (
156156
ProcessVmWritevRet
157157
ArchPrctl
158158
ArchPrctlRet
159+
Dup
160+
DupRet
161+
Dup2
162+
Dup2Ret
163+
Dup3
164+
Dup3Ret
159165
)
160166

161167
// Test probe handles

pkg/events/core.go

Lines changed: 13 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1006,14 +1006,8 @@ var CoreEvents = map[ID]Definition{
10061006
},
10071007
dependencies: Dependencies{
10081008
probes: []Probe{
1009-
{handle: probes.SyscallEnter__Internal, required: true},
1010-
{handle: probes.SyscallExit__Internal, required: true},
1011-
},
1012-
tailCalls: []TailCall{
1013-
{"sys_enter_init_tail", "sys_enter_init", []uint32{uint32(Dup)}},
1014-
{"sys_enter_submit_tail", "sys_enter_submit", []uint32{uint32(Dup)}},
1015-
{"sys_exit_init_tail", "sys_exit_init", []uint32{uint32(Dup)}},
1016-
{"sys_exit_submit_tail", "sys_exit_submit", []uint32{uint32(Dup)}},
1009+
{handle: probes.Dup, required: true},
1010+
{handle: probes.DupRet, required: true},
10171011
},
10181012
},
10191013
},
@@ -1030,14 +1024,8 @@ var CoreEvents = map[ID]Definition{
10301024
},
10311025
dependencies: Dependencies{
10321026
probes: []Probe{
1033-
{handle: probes.SyscallEnter__Internal, required: true},
1034-
{handle: probes.SyscallExit__Internal, required: true},
1035-
},
1036-
tailCalls: []TailCall{
1037-
{"sys_enter_init_tail", "sys_enter_init", []uint32{uint32(Dup2)}},
1038-
{"sys_enter_submit_tail", "sys_enter_submit", []uint32{uint32(Dup2)}},
1039-
{"sys_exit_init_tail", "sys_exit_init", []uint32{uint32(Dup2)}},
1040-
{"sys_exit_submit_tail", "sys_exit_submit", []uint32{uint32(Dup2)}},
1027+
{handle: probes.Dup2, required: true},
1028+
{handle: probes.Dup2Ret, required: true},
10411029
},
10421030
},
10431031
},
@@ -7325,14 +7313,8 @@ var CoreEvents = map[ID]Definition{
73257313
},
73267314
dependencies: Dependencies{
73277315
probes: []Probe{
7328-
{handle: probes.SyscallEnter__Internal, required: true},
7329-
{handle: probes.SyscallExit__Internal, required: true},
7330-
},
7331-
tailCalls: []TailCall{
7332-
{"sys_enter_init_tail", "sys_enter_init", []uint32{uint32(Dup3)}},
7333-
{"sys_enter_submit_tail", "sys_enter_submit", []uint32{uint32(Dup3)}},
7334-
{"sys_exit_init_tail", "sys_exit_init", []uint32{uint32(Dup3)}},
7335-
{"sys_exit_submit_tail", "sys_exit_submit", []uint32{uint32(Dup3)}},
7316+
{handle: probes.Dup3, required: true},
7317+
{handle: probes.Dup3Ret, required: true},
73367318
},
73377319
},
73387320
},
@@ -11884,13 +11866,15 @@ var CoreEvents = map[ID]Definition{
1188411866
version: NewVersion(1, 0, 0),
1188511867
dependencies: Dependencies{
1188611868
probes: []Probe{
11887-
{handle: probes.SyscallEnter__Internal, required: true},
11888-
{handle: probes.SyscallExit__Internal, required: true},
11869+
{handle: probes.Dup, required: true},
11870+
{handle: probes.DupRet, required: true},
11871+
{handle: probes.Dup2, required: false},
11872+
{handle: probes.Dup2Ret, required: false},
11873+
{handle: probes.Dup3, required: true},
11874+
{handle: probes.Dup3Ret, required: true},
1188911875
},
1189011876
tailCalls: []TailCall{
11891-
{"sys_enter_init_tail", "sys_enter_init", []uint32{uint32(Dup), uint32(Dup2), uint32(Dup3)}},
11892-
{"sys_exit_init_tail", "sys_exit_init", []uint32{uint32(Dup), uint32(Dup2), uint32(Dup3)}},
11893-
{"sys_exit_tails", "sys_dup_exit_tail", []uint32{uint32(Dup), uint32(Dup2), uint32(Dup3)}},
11877+
{"generic_sys_exit_tails", "sys_dup_exit_tail", []uint32{uint32(Dup), uint32(Dup2), uint32(Dup3)}},
1189411878
},
1189511879
},
1189611880
sets: []string{},

0 commit comments

Comments
 (0)