7
7
8
8
#include "profiler.h"
9
9
#include "err.h"
10
+ #include "bpf_experimental.h"
10
11
11
12
#ifndef NULL
12
13
#define NULL 0
@@ -221,8 +222,7 @@ static INLINE void* read_full_cgroup_path(struct kernfs_node* cgroup_node,
221
222
return payload ;
222
223
if (cgroup_node == cgroup_root_node )
223
224
* root_pos = payload - payload_start ;
224
- if (filepart_length <= MAX_PATH ) {
225
- barrier_var (filepart_length );
225
+ if (bpf_cmp_likely (filepart_length , <=, MAX_PATH )) {
226
226
payload += filepart_length ;
227
227
}
228
228
cgroup_node = BPF_CORE_READ (cgroup_node , parent );
@@ -305,19 +305,15 @@ static INLINE void* populate_cgroup_info(struct cgroup_data_t* cgroup_data,
305
305
size_t cgroup_root_length =
306
306
bpf_probe_read_kernel_str (payload , MAX_PATH ,
307
307
BPF_CORE_READ (root_kernfs , name ));
308
- barrier_var (cgroup_root_length );
309
- if (cgroup_root_length <= MAX_PATH ) {
310
- barrier_var (cgroup_root_length );
308
+ if (bpf_cmp_likely (cgroup_root_length , <=, MAX_PATH )) {
311
309
cgroup_data -> cgroup_root_length = cgroup_root_length ;
312
310
payload += cgroup_root_length ;
313
311
}
314
312
315
313
size_t cgroup_proc_length =
316
314
bpf_probe_read_kernel_str (payload , MAX_PATH ,
317
315
BPF_CORE_READ (proc_kernfs , name ));
318
- barrier_var (cgroup_proc_length );
319
- if (cgroup_proc_length <= MAX_PATH ) {
320
- barrier_var (cgroup_proc_length );
316
+ if (bpf_cmp_likely (cgroup_proc_length , <=, MAX_PATH )) {
321
317
cgroup_data -> cgroup_proc_length = cgroup_proc_length ;
322
318
payload += cgroup_proc_length ;
323
319
}
@@ -347,9 +343,7 @@ static INLINE void* populate_var_metadata(struct var_metadata_t* metadata,
347
343
metadata -> comm_length = 0 ;
348
344
349
345
size_t comm_length = bpf_core_read_str (payload , TASK_COMM_LEN , & task -> comm );
350
- barrier_var (comm_length );
351
- if (comm_length <= TASK_COMM_LEN ) {
352
- barrier_var (comm_length );
346
+ if (bpf_cmp_likely (comm_length , <=, TASK_COMM_LEN )) {
353
347
metadata -> comm_length = comm_length ;
354
348
payload += comm_length ;
355
349
}
@@ -494,10 +488,9 @@ read_absolute_file_path_from_dentry(struct dentry* filp_dentry, void* payload)
494
488
filepart_length =
495
489
bpf_probe_read_kernel_str (payload , MAX_PATH ,
496
490
BPF_CORE_READ (filp_dentry , d_name .name ));
497
- barrier_var (filepart_length );
498
- if (filepart_length > MAX_PATH )
491
+ bpf_nop_mov (filepart_length );
492
+ if (bpf_cmp_unlikely ( filepart_length , > , MAX_PATH ) )
499
493
break ;
500
- barrier_var (filepart_length );
501
494
payload += filepart_length ;
502
495
length += filepart_length ;
503
496
@@ -579,9 +572,7 @@ ssize_t BPF_KPROBE(kprobe__proc_sys_write,
579
572
580
573
size_t sysctl_val_length = bpf_probe_read_kernel_str (payload ,
581
574
CTL_MAXNAME , buf );
582
- barrier_var (sysctl_val_length );
583
- if (sysctl_val_length <= CTL_MAXNAME ) {
584
- barrier_var (sysctl_val_length );
575
+ if (bpf_cmp_likely (sysctl_val_length , <=, CTL_MAXNAME )) {
585
576
sysctl_data -> sysctl_val_length = sysctl_val_length ;
586
577
payload += sysctl_val_length ;
587
578
}
@@ -590,9 +581,7 @@ ssize_t BPF_KPROBE(kprobe__proc_sys_write,
590
581
bpf_probe_read_kernel_str (payload , MAX_PATH ,
591
582
BPF_CORE_READ (filp , f_path .dentry ,
592
583
d_name .name ));
593
- barrier_var (sysctl_path_length );
594
- if (sysctl_path_length <= MAX_PATH ) {
595
- barrier_var (sysctl_path_length );
584
+ if (bpf_cmp_likely (sysctl_path_length , <=, MAX_PATH )) {
596
585
sysctl_data -> sysctl_path_length = sysctl_path_length ;
597
586
payload += sysctl_path_length ;
598
587
}
@@ -658,9 +647,7 @@ int raw_tracepoint__sched_process_exit(void* ctx)
658
647
kill_data -> kill_target_cgroup_proc_length = 0 ;
659
648
660
649
size_t comm_length = bpf_core_read_str (payload , TASK_COMM_LEN , & task -> comm );
661
- barrier_var (comm_length );
662
- if (comm_length <= TASK_COMM_LEN ) {
663
- barrier_var (comm_length );
650
+ if (bpf_cmp_likely (comm_length , <=, TASK_COMM_LEN )) {
664
651
kill_data -> kill_target_name_length = comm_length ;
665
652
payload += comm_length ;
666
653
}
@@ -669,9 +656,7 @@ int raw_tracepoint__sched_process_exit(void* ctx)
669
656
bpf_probe_read_kernel_str (payload ,
670
657
KILL_TARGET_LEN ,
671
658
BPF_CORE_READ (proc_kernfs , name ));
672
- barrier_var (cgroup_proc_length );
673
- if (cgroup_proc_length <= KILL_TARGET_LEN ) {
674
- barrier_var (cgroup_proc_length );
659
+ if (bpf_cmp_likely (cgroup_proc_length , <=, KILL_TARGET_LEN )) {
675
660
kill_data -> kill_target_cgroup_proc_length = cgroup_proc_length ;
676
661
payload += cgroup_proc_length ;
677
662
}
@@ -731,9 +716,7 @@ int raw_tracepoint__sched_process_exec(struct bpf_raw_tracepoint_args* ctx)
731
716
const char * filename = BPF_CORE_READ (bprm , filename );
732
717
size_t bin_path_length =
733
718
bpf_probe_read_kernel_str (payload , MAX_FILENAME_LEN , filename );
734
- barrier_var (bin_path_length );
735
- if (bin_path_length <= MAX_FILENAME_LEN ) {
736
- barrier_var (bin_path_length );
719
+ if (bpf_cmp_likely (bin_path_length , <=, MAX_FILENAME_LEN )) {
737
720
proc_exec_data -> bin_path_length = bin_path_length ;
738
721
payload += bin_path_length ;
739
722
}
@@ -743,8 +726,7 @@ int raw_tracepoint__sched_process_exec(struct bpf_raw_tracepoint_args* ctx)
743
726
unsigned int cmdline_length = probe_read_lim (payload , arg_start ,
744
727
arg_end - arg_start , MAX_ARGS_LEN );
745
728
746
- if (cmdline_length <= MAX_ARGS_LEN ) {
747
- barrier_var (cmdline_length );
729
+ if (bpf_cmp_likely (cmdline_length , <=, MAX_ARGS_LEN )) {
748
730
proc_exec_data -> cmdline_length = cmdline_length ;
749
731
payload += cmdline_length ;
750
732
}
@@ -821,9 +803,7 @@ int kprobe_ret__do_filp_open(struct pt_regs* ctx)
821
803
payload = populate_cgroup_info (& filemod_data -> cgroup_data , task , payload );
822
804
823
805
size_t len = read_absolute_file_path_from_dentry (filp_dentry , payload );
824
- barrier_var (len );
825
- if (len <= MAX_FILEPATH_LENGTH ) {
826
- barrier_var (len );
806
+ if (bpf_cmp_likely (len , <=, MAX_FILEPATH_LENGTH )) {
827
807
payload += len ;
828
808
filemod_data -> dst_filepath_length = len ;
829
809
}
@@ -876,17 +856,13 @@ int BPF_KPROBE(kprobe__vfs_link,
876
856
payload = populate_cgroup_info (& filemod_data -> cgroup_data , task , payload );
877
857
878
858
size_t len = read_absolute_file_path_from_dentry (old_dentry , payload );
879
- barrier_var (len );
880
- if (len <= MAX_FILEPATH_LENGTH ) {
881
- barrier_var (len );
859
+ if (bpf_cmp_likely (len , <=, MAX_FILEPATH_LENGTH )) {
882
860
payload += len ;
883
861
filemod_data -> src_filepath_length = len ;
884
862
}
885
863
886
864
len = read_absolute_file_path_from_dentry (new_dentry , payload );
887
- barrier_var (len );
888
- if (len <= MAX_FILEPATH_LENGTH ) {
889
- barrier_var (len );
865
+ if (bpf_cmp_likely (len , <=, MAX_FILEPATH_LENGTH )) {
890
866
payload += len ;
891
867
filemod_data -> dst_filepath_length = len ;
892
868
}
@@ -936,16 +912,12 @@ int BPF_KPROBE(kprobe__vfs_symlink, struct inode* dir, struct dentry* dentry,
936
912
937
913
size_t len = bpf_probe_read_kernel_str (payload , MAX_FILEPATH_LENGTH ,
938
914
oldname );
939
- barrier_var (len );
940
- if (len <= MAX_FILEPATH_LENGTH ) {
941
- barrier_var (len );
915
+ if (bpf_cmp_likely (len , <=, MAX_FILEPATH_LENGTH )) {
942
916
payload += len ;
943
917
filemod_data -> src_filepath_length = len ;
944
918
}
945
919
len = read_absolute_file_path_from_dentry (dentry , payload );
946
- barrier_var (len );
947
- if (len <= MAX_FILEPATH_LENGTH ) {
948
- barrier_var (len );
920
+ if (bpf_cmp_likely (len , <=, MAX_FILEPATH_LENGTH )) {
949
921
payload += len ;
950
922
filemod_data -> dst_filepath_length = len ;
951
923
}
0 commit comments