Skip to content

Commit 5d66305

Browse files
jschwinger233brb
authored andcommitted
Correctly calculate data_end
* ,--------------------------- + head * / ,----------------- + data * / / ,----------- + tail * | | | , + end * | | | | * v v v v * ----------------------------------------------- * | headroom | data | tailroom | skb_shared_info | * ----------------------------------------------- According to above illustration of skb, data_end should be skb->head + skb->tail. Signed-off-by: Zhichuan Liang <[email protected]>
1 parent b8dbecf commit 5d66305

File tree

1 file changed

+4
-7
lines changed

1 file changed

+4
-7
lines changed

bpf/kprobe_pwru.c

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -140,14 +140,11 @@ filter_pcap_ebpf(void *_skb, void *__skb, void *___skb, void *data, void* data_e
140140
}
141141

142142
static __always_inline bool
143-
filter_pcap(struct sk_buff *skb) {
144-
BPF_CORE_READ(skb, head);
143+
filter_pcap(struct sk_buff *skb)
144+
{
145145
void *skb_head = BPF_CORE_READ(skb, head);
146-
u16 l3_off = BPF_CORE_READ(skb, network_header);
147-
void *data = skb_head + l3_off;
148-
u16 l4_off = BPF_CORE_READ(skb, transport_header);
149-
u16 len = BPF_CORE_READ(skb, len);
150-
void *data_end = skb_head + l4_off + len;
146+
void *data = skb_head + BPF_CORE_READ(skb, network_header);
147+
void *data_end = skb_head + BPF_CORE_READ(skb, tail);
151148
return filter_pcap_ebpf((void *)skb, (void *)skb, (void *)skb, data, data_end);
152149
}
153150

0 commit comments

Comments
 (0)