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

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
Loading
Loading
Loading
Loading
+0 −2
Original line number Original line Diff line number Diff line
@@ -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.
+0 −2
Original line number Original line Diff line number Diff line
@@ -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;
}
}
+3 −0
Original line number Original line Diff line number Diff line
@@ -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)
+0 −5
Original line number Original line Diff line number Diff line
@@ -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)
+1 −4
Original line number Original line Diff line number Diff line
@@ -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);