diff options
Diffstat (limited to 'net/sched/cls_rsvp.h')
-rw-r--r-- | net/sched/cls_rsvp.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/net/sched/cls_rsvp.h b/net/sched/cls_rsvp.h index dd9414e4420..425a1790b04 100644 --- a/net/sched/cls_rsvp.h +++ b/net/sched/cls_rsvp.h | |||
@@ -143,9 +143,17 @@ static int rsvp_classify(struct sk_buff *skb, struct tcf_proto *tp, | |||
143 | u8 tunnelid = 0; | 143 | u8 tunnelid = 0; |
144 | u8 *xprt; | 144 | u8 *xprt; |
145 | #if RSVP_DST_LEN == 4 | 145 | #if RSVP_DST_LEN == 4 |
146 | struct ipv6hdr *nhptr = ipv6_hdr(skb); | 146 | struct ipv6hdr *nhptr; |
147 | |||
148 | if (!pskb_network_may_pull(skb, sizeof(*nhptr))) | ||
149 | return -1; | ||
150 | nhptr = ipv6_hdr(skb); | ||
147 | #else | 151 | #else |
148 | struct iphdr *nhptr = ip_hdr(skb); | 152 | struct iphdr *nhptr; |
153 | |||
154 | if (!pskb_network_may_pull(skb, sizeof(*nhptr))) | ||
155 | return -1; | ||
156 | nhptr = ip_hdr(skb); | ||
149 | #endif | 157 | #endif |
150 | 158 | ||
151 | restart: | 159 | restart: |