net/mlx5e: Fix possible modify header actions memory leak
authorEli Britstein <elibr@mellanox.com>
Sun, 12 May 2019 11:50:58 +0000 (11:50 +0000)
committerSaeed Mahameed <saeedm@mellanox.com>
Fri, 17 May 2019 20:16:49 +0000 (13:16 -0700)
The cited commit could disable the modify header flag, but did not free
the allocated memory for the modify header actions. Fix it.

Fixes: 27c11b6b844cd ("net/mlx5e: Do not rewrite fields with the same match")
Signed-off-by: Eli Britstein <elibr@mellanox.com>
Reviewed-by: Roi Dayan <roid@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c

index 4722ac70f0a949a6eeb70c609181499d93bdcf93..31cd02f1149939bf6d2126583a49c01a5f310b73 100644 (file)
@@ -2567,8 +2567,10 @@ static int parse_tc_nic_actions(struct mlx5e_priv *priv,
                /* in case all pedit actions are skipped, remove the MOD_HDR
                 * flag.
                 */
-               if (parse_attr->num_mod_hdr_actions == 0)
+               if (parse_attr->num_mod_hdr_actions == 0) {
                        action &= ~MLX5_FLOW_CONTEXT_ACTION_MOD_HDR;
+                       kfree(parse_attr->mod_hdr_actions);
+               }
        }
 
        attr->action = action;
@@ -3005,6 +3007,7 @@ static int parse_tc_fdb_actions(struct mlx5e_priv *priv,
                 */
                if (parse_attr->num_mod_hdr_actions == 0) {
                        action &= ~MLX5_FLOW_CONTEXT_ACTION_MOD_HDR;
+                       kfree(parse_attr->mod_hdr_actions);
                        if (!((action & MLX5_FLOW_CONTEXT_ACTION_VLAN_POP) ||
                              (action & MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH)))
                                attr->split_count = 0;