Skip to content

Commit 76896cb

Browse files
committed
tgupdate: merge t/upstream base into t/upstream
2 parents ee5c47a + 773c325 commit 76896cb

File tree

4 files changed

+17
-3
lines changed

4 files changed

+17
-3
lines changed

include/net/pkt_cls.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,8 @@ static inline unsigned char * tcf_get_base_ptr(struct sk_buff *skb, int layer)
536536
case TCF_LAYER_NETWORK:
537537
return skb_network_header(skb);
538538
case TCF_LAYER_TRANSPORT:
539+
if (!skb_transport_header_was_set(skb))
540+
break;
539541
return skb_transport_header(skb);
540542
}
541543

net/sched/em_cmp.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,12 @@ static int em_cmp_match(struct sk_buff *skb, struct tcf_ematch *em,
2222
struct tcf_pkt_info *info)
2323
{
2424
struct tcf_em_cmp *cmp = (struct tcf_em_cmp *) em->data;
25-
unsigned char *ptr = tcf_get_base_ptr(skb, cmp->layer) + cmp->off;
25+
unsigned char *ptr = tcf_get_base_ptr(skb, cmp->layer);
2626
u32 val = 0;
2727

28+
if (!ptr)
29+
return 0;
30+
ptr += cmp->off;
2831
if (!tcf_valid_offset(skb, ptr, cmp->align))
2932
return 0;
3033

net/sched/em_nbyte.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ static int em_nbyte_match(struct sk_buff *skb, struct tcf_ematch *em,
4242
struct nbyte_data *nbyte = (struct nbyte_data *) em->data;
4343
unsigned char *ptr = tcf_get_base_ptr(skb, nbyte->hdr.layer);
4444

45+
if (!ptr)
46+
return 0;
4547
ptr += nbyte->hdr.off;
4648

4749
if (!tcf_valid_offset(skb, ptr, nbyte->hdr.len))

net/sched/em_text.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,19 @@ static int em_text_match(struct sk_buff *skb, struct tcf_ematch *m,
2929
struct tcf_pkt_info *info)
3030
{
3131
struct text_match *tm = EM_TEXT_PRIV(m);
32+
unsigned char *ptr;
3233
int from, to;
3334

34-
from = tcf_get_base_ptr(skb, tm->from_layer) - skb->data;
35+
ptr = tcf_get_base_ptr(skb, tm->from_layer);
36+
if (!ptr)
37+
return 0;
38+
from = ptr - skb->data;
3539
from += tm->from_offset;
3640

37-
to = tcf_get_base_ptr(skb, tm->to_layer) - skb->data;
41+
ptr = tcf_get_base_ptr(skb, tm->to_layer);
42+
if (!ptr)
43+
return 0;
44+
to = ptr - skb->data;
3845
to += tm->to_offset;
3946

4047
return skb_find_text(skb, from, to, tm->config) != UINT_MAX;

0 commit comments

Comments
 (0)