net: sched: use counter to break reclassify loops
authorFlorian Westphal <fw@strlen.de>
Mon, 11 May 2015 17:50:41 +0000 (19:50 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 13 May 2015 19:08:14 +0000 (15:08 -0400)
commite578d9c02587d57bfa7b560767c698a668a468c6
treea24a35260c20cae8a990ff71862ab68d92a04d84
parentb04096ff33a977c01c8780ca3ee129dbd641bad4
net: sched: use counter to break reclassify loops

Seems all we want here is to avoid endless 'goto reclassify' loop.
tc_classify_compat even resets this counter when something other
than TC_ACT_RECLASSIFY is returned, so this skb-counter doesn't
break hypothetical loops induced by something other than perpetual
TC_ACT_RECLASSIFY return values.

skb_act_clone is now identical to skb_clone, so just use that.

Tested with following (bogus) filter:
tc filter add dev eth0 parent ffff: \
 protocol ip u32 match u32 0 0 police rate 10Kbit burst \
 64000 mtu 1500 action reclassify

Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Florian Westphal <fw@strlen.de>
Acked-by: Alexei Starovoitov <ast@plumgrid.com>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Documentation/networking/tc-actions-env-rules.txt
include/net/sch_generic.h
include/uapi/linux/pkt_cls.h
net/sched/act_mirred.c
net/sched/sch_api.c