|
@@ -71,6 +71,7 @@ ip_vs_sip_fill_param(struct ip_vs_conn_param *p, struct sk_buff *skb)
|
|
|
struct ip_vs_iphdr iph;
|
|
|
unsigned int dataoff, datalen, matchoff, matchlen;
|
|
|
const char *dptr;
|
|
|
+ int retc;
|
|
|
|
|
|
ip_vs_fill_iphdr(p->af, skb_network_header(skb), &iph);
|
|
|
|
|
@@ -83,6 +84,8 @@ ip_vs_sip_fill_param(struct ip_vs_conn_param *p, struct sk_buff *skb)
|
|
|
if (dataoff >= skb->len)
|
|
|
return -EINVAL;
|
|
|
|
|
|
+ if ((retc=skb_linearize(skb)) < 0)
|
|
|
+ return retc;
|
|
|
dptr = skb->data + dataoff;
|
|
|
datalen = skb->len - dataoff;
|
|
|
|