Commit 57714018 authored by Pedro Tammela's avatar Pedro Tammela Committed by David S. Miller

net/sched: act_pedit: remove extra check for key type

The netlink parsing already validates the key 'htype'.
Remove the datapath check as it's redundant.
Reviewed-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
Signed-off-by: default avatarPedro Tammela <pctammela@mojatatu.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e1201bc7
...@@ -325,37 +325,28 @@ static bool offset_valid(struct sk_buff *skb, int offset) ...@@ -325,37 +325,28 @@ static bool offset_valid(struct sk_buff *skb, int offset)
return true; return true;
} }
static int pedit_skb_hdr_offset(struct sk_buff *skb, static void pedit_skb_hdr_offset(struct sk_buff *skb,
enum pedit_header_type htype, int *hoffset) enum pedit_header_type htype, int *hoffset)
{ {
int ret = -EINVAL; /* 'htype' is validated in the netlink parsing */
switch (htype) { switch (htype) {
case TCA_PEDIT_KEY_EX_HDR_TYPE_ETH: case TCA_PEDIT_KEY_EX_HDR_TYPE_ETH:
if (skb_mac_header_was_set(skb)) { if (skb_mac_header_was_set(skb))
*hoffset = skb_mac_offset(skb); *hoffset = skb_mac_offset(skb);
ret = 0;
}
break; break;
case TCA_PEDIT_KEY_EX_HDR_TYPE_NETWORK: case TCA_PEDIT_KEY_EX_HDR_TYPE_NETWORK:
case TCA_PEDIT_KEY_EX_HDR_TYPE_IP4: case TCA_PEDIT_KEY_EX_HDR_TYPE_IP4:
case TCA_PEDIT_KEY_EX_HDR_TYPE_IP6: case TCA_PEDIT_KEY_EX_HDR_TYPE_IP6:
*hoffset = skb_network_offset(skb); *hoffset = skb_network_offset(skb);
ret = 0;
break; break;
case TCA_PEDIT_KEY_EX_HDR_TYPE_TCP: case TCA_PEDIT_KEY_EX_HDR_TYPE_TCP:
case TCA_PEDIT_KEY_EX_HDR_TYPE_UDP: case TCA_PEDIT_KEY_EX_HDR_TYPE_UDP:
if (skb_transport_header_was_set(skb)) { if (skb_transport_header_was_set(skb))
*hoffset = skb_transport_offset(skb); *hoffset = skb_transport_offset(skb);
ret = 0;
}
break; break;
default: default:
ret = -EINVAL;
break; break;
} }
return ret;
} }
TC_INDIRECT_SCOPE int tcf_pedit_act(struct sk_buff *skb, TC_INDIRECT_SCOPE int tcf_pedit_act(struct sk_buff *skb,
...@@ -388,10 +379,9 @@ TC_INDIRECT_SCOPE int tcf_pedit_act(struct sk_buff *skb, ...@@ -388,10 +379,9 @@ TC_INDIRECT_SCOPE int tcf_pedit_act(struct sk_buff *skb,
for (i = parms->tcfp_nkeys; i > 0; i--, tkey++) { for (i = parms->tcfp_nkeys; i > 0; i--, tkey++) {
int offset = tkey->off; int offset = tkey->off;
int hoffset = 0;
u32 *ptr, hdata; u32 *ptr, hdata;
int hoffset;
u32 val; u32 val;
int rc;
if (tkey_ex) { if (tkey_ex) {
htype = tkey_ex->htype; htype = tkey_ex->htype;
...@@ -400,12 +390,7 @@ TC_INDIRECT_SCOPE int tcf_pedit_act(struct sk_buff *skb, ...@@ -400,12 +390,7 @@ TC_INDIRECT_SCOPE int tcf_pedit_act(struct sk_buff *skb,
tkey_ex++; tkey_ex++;
} }
rc = pedit_skb_hdr_offset(skb, htype, &hoffset); pedit_skb_hdr_offset(skb, htype, &hoffset);
if (rc) {
pr_info("tc action pedit bad header type specified (0x%x)\n",
htype);
goto bad;
}
if (tkey->offmask) { if (tkey->offmask) {
u8 *d, _d; u8 *d, _d;
......
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