aboutsummaryrefslogtreecommitdiffstats
path: root/net/sched/em_text.c
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2025-12-01 11:31:10 +0000
committersaturneric <[email protected]>2025-12-01 11:31:10 +0000
commitfa2a26ee8b4693d3733a7d58863cb38cb0e8680e (patch)
tree01f99691b8e34c516e435932f1353ad673bedf2e /net/sched/em_text.c
parentfix(driver): sync specific drivers from rpi upstream (diff)
parentLinux 6.18 (diff)
downloadkernel-main.tar.gz
kernel-main.zip
Merge tag 'v6.18' into linux-6.18.yHEADmainlinux-6.18.y
Linux 6.18
Diffstat (limited to 'net/sched/em_text.c')
-rw-r--r--net/sched/em_text.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/net/sched/em_text.c b/net/sched/em_text.c
index 6b3d0af72c39..692e2be1793e 100644
--- a/net/sched/em_text.c
+++ b/net/sched/em_text.c
@@ -29,12 +29,19 @@ static int em_text_match(struct sk_buff *skb, struct tcf_ematch *m,
struct tcf_pkt_info *info)
{
struct text_match *tm = EM_TEXT_PRIV(m);
+ unsigned char *ptr;
int from, to;
- from = tcf_get_base_ptr(skb, tm->from_layer) - skb->data;
+ ptr = tcf_get_base_ptr(skb, tm->from_layer);
+ if (!ptr)
+ return 0;
+ from = ptr - skb->data;
from += tm->from_offset;
- to = tcf_get_base_ptr(skb, tm->to_layer) - skb->data;
+ ptr = tcf_get_base_ptr(skb, tm->to_layer);
+ if (!ptr)
+ return 0;
+ to = ptr - skb->data;
to += tm->to_offset;
return skb_find_text(skb, from, to, tm->config) != UINT_MAX;