}
        mutex_unlock(&priv->fs.tc.t_lock);
 
-       kvfree(attr->parse_attr);
-
        if (attr->action & MLX5_FLOW_CONTEXT_ACTION_MOD_HDR)
                mlx5e_detach_mod_hdr(priv, flow);
 
        if (flow_flag_test(flow, HAIRPIN))
                mlx5e_hairpin_flow_del(priv, flow);
 
+       kvfree(attr->parse_attr);
        kfree(flow->attr);
 }
 
                else
                        mlx5e_detach_mod_hdr(priv, flow);
        }
-       kfree(attr->sample_attr);
-       kvfree(attr->parse_attr);
-       kvfree(attr->esw_attr->rx_tun_attr);
 
        if (attr->action & MLX5_FLOW_CONTEXT_ACTION_COUNT)
                mlx5_fc_destroy(esw_attr->counter_dev, attr->counter);
        if (flow_flag_test(flow, L3_TO_L2_DECAP))
                mlx5e_detach_decap(priv, flow);
 
+       kfree(attr->sample_attr);
+       kvfree(attr->esw_attr->rx_tun_attr);
+       kvfree(attr->parse_attr);
        kfree(flow->attr);
 }