Commit 4749c3ef authored by Florian Westphal's avatar Florian Westphal Committed by David S. Miller

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: default avatarFlorian Westphal <fw@strlen.de>
Acked-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
Acked-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
Acked-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7eee8cd4
...@@ -14,8 +14,6 @@ resets them for you, so invoke skb_act_clone() rather than skb_clone(). ...@@ -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.
......
...@@ -755,8 +755,6 @@ static inline struct sk_buff *skb_act_clone(struct sk_buff *skb, gfp_t gfp_mask, ...@@ -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;
} }
......
...@@ -35,6 +35,8 @@ bits 9,10,11: redirect counter - redirect TTL. Loop avoidance ...@@ -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 ...@@ -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)
......
...@@ -392,11 +392,6 @@ int tcf_action_exec(struct sk_buff *skb, const struct list_head *actions, ...@@ -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)
......
...@@ -108,7 +108,7 @@ static int tcf_pedit(struct sk_buff *skb, const struct tc_action *a, ...@@ -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, ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment