77
88#include "profiler.h"
99#include "err.h"
10+ #include "bpf_experimental.h"
1011
1112#ifndef NULL
1213#define NULL 0
@@ -221,8 +222,7 @@ static INLINE void* read_full_cgroup_path(struct kernfs_node* cgroup_node,
221222 return payload ;
222223 if (cgroup_node == cgroup_root_node )
223224 * 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 )) {
226226 payload += filepart_length ;
227227 }
228228 cgroup_node = BPF_CORE_READ (cgroup_node , parent );
@@ -305,19 +305,15 @@ static INLINE void* populate_cgroup_info(struct cgroup_data_t* cgroup_data,
305305 size_t cgroup_root_length =
306306 bpf_probe_read_kernel_str (payload , MAX_PATH ,
307307 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 )) {
311309 cgroup_data -> cgroup_root_length = cgroup_root_length ;
312310 payload += cgroup_root_length ;
313311 }
314312
315313 size_t cgroup_proc_length =
316314 bpf_probe_read_kernel_str (payload , MAX_PATH ,
317315 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 )) {
321317 cgroup_data -> cgroup_proc_length = cgroup_proc_length ;
322318 payload += cgroup_proc_length ;
323319 }
@@ -347,9 +343,7 @@ static INLINE void* populate_var_metadata(struct var_metadata_t* metadata,
347343 metadata -> comm_length = 0 ;
348344
349345 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 )) {
353347 metadata -> comm_length = comm_length ;
354348 payload += comm_length ;
355349 }
@@ -494,10 +488,9 @@ read_absolute_file_path_from_dentry(struct dentry* filp_dentry, void* payload)
494488 filepart_length =
495489 bpf_probe_read_kernel_str (payload , MAX_PATH ,
496490 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 ) )
499493 break ;
500- barrier_var (filepart_length );
501494 payload += filepart_length ;
502495 length += filepart_length ;
503496
@@ -579,9 +572,7 @@ ssize_t BPF_KPROBE(kprobe__proc_sys_write,
579572
580573 size_t sysctl_val_length = bpf_probe_read_kernel_str (payload ,
581574 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 )) {
585576 sysctl_data -> sysctl_val_length = sysctl_val_length ;
586577 payload += sysctl_val_length ;
587578 }
@@ -590,9 +581,7 @@ ssize_t BPF_KPROBE(kprobe__proc_sys_write,
590581 bpf_probe_read_kernel_str (payload , MAX_PATH ,
591582 BPF_CORE_READ (filp , f_path .dentry ,
592583 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 )) {
596585 sysctl_data -> sysctl_path_length = sysctl_path_length ;
597586 payload += sysctl_path_length ;
598587 }
@@ -658,9 +647,7 @@ int raw_tracepoint__sched_process_exit(void* ctx)
658647 kill_data -> kill_target_cgroup_proc_length = 0 ;
659648
660649 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 )) {
664651 kill_data -> kill_target_name_length = comm_length ;
665652 payload += comm_length ;
666653 }
@@ -669,9 +656,7 @@ int raw_tracepoint__sched_process_exit(void* ctx)
669656 bpf_probe_read_kernel_str (payload ,
670657 KILL_TARGET_LEN ,
671658 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 )) {
675660 kill_data -> kill_target_cgroup_proc_length = cgroup_proc_length ;
676661 payload += cgroup_proc_length ;
677662 }
@@ -731,9 +716,7 @@ int raw_tracepoint__sched_process_exec(struct bpf_raw_tracepoint_args* ctx)
731716 const char * filename = BPF_CORE_READ (bprm , filename );
732717 size_t bin_path_length =
733718 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 )) {
737720 proc_exec_data -> bin_path_length = bin_path_length ;
738721 payload += bin_path_length ;
739722 }
@@ -743,8 +726,7 @@ int raw_tracepoint__sched_process_exec(struct bpf_raw_tracepoint_args* ctx)
743726 unsigned int cmdline_length = probe_read_lim (payload , arg_start ,
744727 arg_end - arg_start , MAX_ARGS_LEN );
745728
746- if (cmdline_length <= MAX_ARGS_LEN ) {
747- barrier_var (cmdline_length );
729+ if (bpf_cmp_likely (cmdline_length , <=, MAX_ARGS_LEN )) {
748730 proc_exec_data -> cmdline_length = cmdline_length ;
749731 payload += cmdline_length ;
750732 }
@@ -821,9 +803,7 @@ int kprobe_ret__do_filp_open(struct pt_regs* ctx)
821803 payload = populate_cgroup_info (& filemod_data -> cgroup_data , task , payload );
822804
823805 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 )) {
827807 payload += len ;
828808 filemod_data -> dst_filepath_length = len ;
829809 }
@@ -876,17 +856,13 @@ int BPF_KPROBE(kprobe__vfs_link,
876856 payload = populate_cgroup_info (& filemod_data -> cgroup_data , task , payload );
877857
878858 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 )) {
882860 payload += len ;
883861 filemod_data -> src_filepath_length = len ;
884862 }
885863
886864 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 )) {
890866 payload += len ;
891867 filemod_data -> dst_filepath_length = len ;
892868 }
@@ -936,16 +912,12 @@ int BPF_KPROBE(kprobe__vfs_symlink, struct inode* dir, struct dentry* dentry,
936912
937913 size_t len = bpf_probe_read_kernel_str (payload , MAX_FILEPATH_LENGTH ,
938914 oldname );
939- barrier_var (len );
940- if (len <= MAX_FILEPATH_LENGTH ) {
941- barrier_var (len );
915+ if (bpf_cmp_likely (len , <=, MAX_FILEPATH_LENGTH )) {
942916 payload += len ;
943917 filemod_data -> src_filepath_length = len ;
944918 }
945919 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 )) {
949921 payload += len ;
950922 filemod_data -> dst_filepath_length = len ;
951923 }
0 commit comments