net: sched: remove TC_MUNGED bits

Not used.

pedit sets TC_MUNGED when packet content was altered, but all the core
does is unset MUNGED again and then set OK2MUNGE.

And the latter isn't tested anywhere. So lets remove both
TC_MUNGED and TC_OK2MUNGE.

Signed-off-by: Florian Westphal <fw@strlen.de>
Acked-by: Alexei Starovoitov <ast@plumgrid.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Florian Westphal 2015-04-30 12:12:00 +02:00 committed by David S. Miller
parent 7eee8cd4d8
commit 4749c3ef85
5 changed files with 4 additions and 13 deletions

View file

@ -14,8 +14,6 @@ resets them for you, so invoke skb_act_clone() rather than skb_clone().
2) If you munge any packet thou shalt call pskb_expand_head in the case 2) If you munge any packet thou shalt call pskb_expand_head in the case
someone else is referencing the skb. After that you "own" the skb. someone else is referencing the skb. After that you "own" the skb.
You must also tell us if it is ok to munge the packet (TC_OK2MUNGE),
this way any action downstream can stomp on the packet.
3) Dropping packets you don't own is a no-no. You simply return 3) Dropping packets you don't own is a no-no. You simply return
TC_ACT_SHOT to the caller and they will drop it. TC_ACT_SHOT to the caller and they will drop it.

View file

@ -755,8 +755,6 @@ static inline struct sk_buff *skb_act_clone(struct sk_buff *skb, gfp_t gfp_mask,
if (n) { if (n) {
n->tc_verd = SET_TC_VERD(n->tc_verd, 0); n->tc_verd = SET_TC_VERD(n->tc_verd, 0);
n->tc_verd = CLR_TC_OK2MUNGE(n->tc_verd);
n->tc_verd = CLR_TC_MUNGED(n->tc_verd);
} }
return n; return n;
} }

View file

@ -35,6 +35,8 @@ bits 9,10,11: redirect counter - redirect TTL. Loop avoidance
* *
* */ * */
#ifndef __KERNEL__
/* backwards compat for userspace only */
#define TC_MUNGED _TC_MAKEMASK1(0) #define TC_MUNGED _TC_MAKEMASK1(0)
#define SET_TC_MUNGED(v) ( TC_MUNGED | (v & ~TC_MUNGED)) #define SET_TC_MUNGED(v) ( TC_MUNGED | (v & ~TC_MUNGED))
#define CLR_TC_MUNGED(v) ( v & ~TC_MUNGED) #define CLR_TC_MUNGED(v) ( v & ~TC_MUNGED)
@ -42,6 +44,7 @@ bits 9,10,11: redirect counter - redirect TTL. Loop avoidance
#define TC_OK2MUNGE _TC_MAKEMASK1(1) #define TC_OK2MUNGE _TC_MAKEMASK1(1)
#define SET_TC_OK2MUNGE(v) ( TC_OK2MUNGE | (v & ~TC_OK2MUNGE)) #define SET_TC_OK2MUNGE(v) ( TC_OK2MUNGE | (v & ~TC_OK2MUNGE))
#define CLR_TC_OK2MUNGE(v) ( v & ~TC_OK2MUNGE) #define CLR_TC_OK2MUNGE(v) ( v & ~TC_OK2MUNGE)
#endif
#define S_TC_VERD _TC_MAKE32(2) #define S_TC_VERD _TC_MAKE32(2)
#define M_TC_VERD _TC_MAKEMASK(4,S_TC_VERD) #define M_TC_VERD _TC_MAKEMASK(4,S_TC_VERD)

View file

@ -392,11 +392,6 @@ int tcf_action_exec(struct sk_buff *skb, const struct list_head *actions,
list_for_each_entry(a, actions, list) { list_for_each_entry(a, actions, list) {
repeat: repeat:
ret = a->ops->act(skb, a, res); ret = a->ops->act(skb, a, res);
if (TC_MUNGED & skb->tc_verd) {
/* copied already, allow trampling */
skb->tc_verd = SET_TC_OK2MUNGE(skb->tc_verd);
skb->tc_verd = CLR_TC_MUNGED(skb->tc_verd);
}
if (ret == TC_ACT_REPEAT) if (ret == TC_ACT_REPEAT)
goto repeat; /* we need a ttl - JHS */ goto repeat; /* we need a ttl - JHS */
if (ret != TC_ACT_PIPE) if (ret != TC_ACT_PIPE)

View file

@ -108,7 +108,7 @@ static int tcf_pedit(struct sk_buff *skb, const struct tc_action *a,
struct tcf_result *res) struct tcf_result *res)
{ {
struct tcf_pedit *p = a->priv; struct tcf_pedit *p = a->priv;
int i, munged = 0; int i;
unsigned int off; unsigned int off;
if (skb_unclone(skb, GFP_ATOMIC)) if (skb_unclone(skb, GFP_ATOMIC))
@ -156,11 +156,8 @@ static int tcf_pedit(struct sk_buff *skb, const struct tc_action *a,
*ptr = ((*ptr & tkey->mask) ^ tkey->val); *ptr = ((*ptr & tkey->mask) ^ tkey->val);
if (ptr == &_data) if (ptr == &_data)
skb_store_bits(skb, off + offset, ptr, 4); skb_store_bits(skb, off + offset, ptr, 4);
munged++;
} }
if (munged)
skb->tc_verd = SET_TC_MUNGED(skb->tc_verd);
goto done; goto done;
} else } else
WARN(1, "pedit BUG: index %d\n", p->tcf_index); WARN(1, "pedit BUG: index %d\n", p->tcf_index);