@@ -434,13 +434,13 @@ set_output(void *ctx, struct sk_buff *skb, struct event_t *event) {
434
434
}
435
435
436
436
static __noinline bool
437
- handle_everything (struct sk_buff * skb , void * ctx , struct event_t * event , u64 * _stackid ) {
437
+ handle_everything (struct sk_buff * skb , void * ctx , struct event_t * event , u64 * _stackid , const bool is_kprobe ) {
438
438
u8 tracked_by ;
439
439
u64 skb_addr = (u64 ) skb ;
440
440
u64 skb_head = (u64 ) BPF_CORE_READ (skb , head );
441
441
u64 stackid ;
442
442
443
- if (cfg -> track_skb_by_stackid )
443
+ if (cfg -> track_skb_by_stackid && is_kprobe )
444
444
stackid = _stackid ? * _stackid : get_stackid (ctx );
445
445
446
446
if (cfg -> is_set ) {
@@ -457,7 +457,7 @@ handle_everything(struct sk_buff *skb, void *ctx, struct event_t *event, u64 *_s
457
457
goto cont ;
458
458
}
459
459
460
- if (cfg -> track_skb_by_stackid && bpf_map_lookup_elem (& stackid_skb , & stackid )) {
460
+ if (cfg -> track_skb_by_stackid && is_kprobe && bpf_map_lookup_elem (& stackid_skb , & stackid )) {
461
461
tracked_by = TRACKED_BY_STACKID ;
462
462
goto cont ;
463
463
}
@@ -479,7 +479,7 @@ handle_everything(struct sk_buff *skb, void *ctx, struct event_t *event, u64 *_s
479
479
bpf_map_update_elem (& xdp_dhs_skb_heads , & skb_head , & skb_addr , BPF_ANY );
480
480
}
481
481
482
- if (cfg -> track_skb_by_stackid && tracked_by != TRACKED_BY_STACKID ) {
482
+ if (cfg -> track_skb_by_stackid && is_kprobe && tracked_by != TRACKED_BY_STACKID ) {
483
483
u64 * old_stackid = bpf_map_lookup_elem (& skb_stackid , & skb );
484
484
if (old_stackid && * old_stackid != stackid ) {
485
485
bpf_map_delete_elem (& stackid_skb , old_stackid );
@@ -499,7 +499,7 @@ static __always_inline int
499
499
kprobe_skb (struct sk_buff * skb , struct pt_regs * ctx , bool has_get_func_ip , u64 * _stackid ) {
500
500
struct event_t event = {};
501
501
502
- if (!handle_everything (skb , ctx , & event , _stackid ))
502
+ if (!handle_everything (skb , ctx , & event , _stackid , true ))
503
503
return BPF_OK ;
504
504
505
505
event .skb_addr = (u64 ) skb ;
@@ -596,7 +596,7 @@ SEC("fentry/tc")
596
596
int BPF_PROG (fentry_tc , struct sk_buff * skb ) {
597
597
struct event_t event = {};
598
598
599
- if (!handle_everything (skb , ctx , & event , NULL ))
599
+ if (!handle_everything (skb , ctx , & event , NULL , false ))
600
600
return BPF_OK ;
601
601
602
602
event .skb_addr = (u64 ) skb ;
0 commit comments