X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=net%2Fsched%2Fcls_u32.c;h=7416a5c73b2a993550991ac66eca7cc254c6f2e6;hb=faa38b5e0e092914764cdba9f83d31a3f794d182;hp=4f522143811e467fe70e7e4b13db47f979b11b8a;hpb=65ee2ba3105f6ca3b8814d993682d4f21a1f0d8d;p=mv-sheeva.git diff --git a/net/sched/cls_u32.c b/net/sched/cls_u32.c index 4f522143811..7416a5c73b2 100644 --- a/net/sched/cls_u32.c +++ b/net/sched/cls_u32.c @@ -134,10 +134,12 @@ next_knode: #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;