From 53c16d9febfe8e9e6db6ea76b7099d5a5ea05044 Mon Sep 17 00:00:00 2001 From: stephen hemminger Date: Mon, 2 Aug 2010 13:44:13 +0000 Subject: [PATCH] --- yaml --- r: 204028 b: refs/heads/master c: 66d50d25502cd9b7d6e3ebbf4e241259c1283eaf h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/sched/cls_u32.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 06ea6ec139b2..f28ec40bee0f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: eabd8ba9060444cac5b89a3306e607c15ec37418 +refs/heads/master: 66d50d25502cd9b7d6e3ebbf4e241259c1283eaf diff --git a/trunk/net/sched/cls_u32.c b/trunk/net/sched/cls_u32.c index 4f522143811e..7416a5c73b2a 100644 --- a/trunk/net/sched/cls_u32.c +++ b/trunk/net/sched/cls_u32.c @@ -134,10 +134,12 @@ static int u32_classify(struct sk_buff *skb, struct tcf_proto *tp, struct tcf_re #endif for (i = n->sel.nkeys; i>0; i--, key++) { - unsigned int toff; + int toff = off + key->off + (off2 & key->offmask); __be32 *data, _data; - toff = off + key->off + (off2 & key->offmask); + if (skb_headroom(skb) + toff < 0) + goto out; + data = skb_header_pointer(skb, toff, 4, &_data); if (!data) goto out;