|
@@ -1393,10 +1393,8 @@ static int sip_help_tcp(struct sk_buff *skb, unsigned int protoff,
|
|
|
|
|
|
nf_ct_refresh(ct, skb, sip_timeout * HZ);
|
|
nf_ct_refresh(ct, skb, sip_timeout * HZ);
|
|
|
|
|
|
- if (skb_is_nonlinear(skb)) {
|
|
|
|
- pr_debug("Copy of skbuff not supported yet.\n");
|
|
|
|
- return NF_ACCEPT;
|
|
|
|
- }
|
|
|
|
|
|
+ if (unlikely(skb_linearize(skb)))
|
|
|
|
+ return NF_DROP;
|
|
|
|
|
|
dptr = skb->data + dataoff;
|
|
dptr = skb->data + dataoff;
|
|
datalen = skb->len - dataoff;
|
|
datalen = skb->len - dataoff;
|
|
@@ -1455,10 +1453,8 @@ static int sip_help_udp(struct sk_buff *skb, unsigned int protoff,
|
|
|
|
|
|
nf_ct_refresh(ct, skb, sip_timeout * HZ);
|
|
nf_ct_refresh(ct, skb, sip_timeout * HZ);
|
|
|
|
|
|
- if (skb_is_nonlinear(skb)) {
|
|
|
|
- pr_debug("Copy of skbuff not supported yet.\n");
|
|
|
|
- return NF_ACCEPT;
|
|
|
|
- }
|
|
|
|
|
|
+ if (unlikely(skb_linearize(skb)))
|
|
|
|
+ return NF_DROP;
|
|
|
|
|
|
dptr = skb->data + dataoff;
|
|
dptr = skb->data + dataoff;
|
|
datalen = skb->len - dataoff;
|
|
datalen = skb->len - dataoff;
|