net/sched: act_pedit: remove extra check for key type
authorPedro Tammela <pctammela@mojatatu.com>
Fri, 21 Apr 2023 21:25:16 +0000 (18:25 -0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 21 Jun 2023 14:00:58 +0000 (16:00 +0200)
[ Upstream commit 577140180ba28d0d37bc898c7bd6702c83aa106f ]

The netlink parsing already validates the key 'htype'.
Remove the datapath check as it's redundant.

Reviewed-by: Jamal Hadi Salim <jhs@mojatatu.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: Pedro Tammela <pctammela@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Stable-dep-of: 6c02568fd1ae ("net/sched: act_pedit: Parse L3 Header for L4 offset")
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/sched/act_pedit.c

index 19f6b3f..48e14cb 100644 (file)
@@ -312,37 +312,28 @@ static bool offset_valid(struct sk_buff *skb, int offset)
        return true;
 }
 
-static int pedit_skb_hdr_offset(struct sk_buff *skb,
-                               enum pedit_header_type htype, int *hoffset)
+static void pedit_skb_hdr_offset(struct sk_buff *skb,
+                                enum pedit_header_type htype, int *hoffset)
 {
-       int ret = -EINVAL;
-
+       /* 'htype' is validated in the netlink parsing */
        switch (htype) {
        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);
-                       ret = 0;
-               }
                break;
        case TCA_PEDIT_KEY_EX_HDR_TYPE_NETWORK:
        case TCA_PEDIT_KEY_EX_HDR_TYPE_IP4:
        case TCA_PEDIT_KEY_EX_HDR_TYPE_IP6:
                *hoffset = skb_network_offset(skb);
-               ret = 0;
                break;
        case TCA_PEDIT_KEY_EX_HDR_TYPE_TCP:
        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);
-                       ret = 0;
-               }
                break;
        default:
-               ret = -EINVAL;
                break;
        }
-
-       return ret;
 }
 
 static int tcf_pedit_act(struct sk_buff *skb, const struct tc_action *a,
@@ -374,10 +365,9 @@ static int tcf_pedit_act(struct sk_buff *skb, const struct tc_action *a,
 
        for (i = parms->tcfp_nkeys; i > 0; i--, tkey++) {
                int offset = tkey->off;
+               int hoffset = 0;
                u32 *ptr, hdata;
-               int hoffset;
                u32 val;
-               int rc;
 
                if (tkey_ex) {
                        htype = tkey_ex->htype;
@@ -386,12 +376,7 @@ static int tcf_pedit_act(struct sk_buff *skb, const struct tc_action *a,
                        tkey_ex++;
                }
 
-               rc = pedit_skb_hdr_offset(skb, htype, &hoffset);
-               if (rc) {
-                       pr_info("tc action pedit bad header type specified (0x%x)\n",
-                               htype);
-                       goto bad;
-               }
+               pedit_skb_hdr_offset(skb, htype, &hoffset);
 
                if (tkey->offmask) {
                        u8 *d, _d;