struct mlx5e_priv *priv,
                    struct mlx5_flow_attr *attr)
 {
-       struct mlx5e_sample_attr *sample_attr = &parse_state->sample_attr;
+       struct mlx5e_sample_attr *sample_attr;
+
+       sample_attr = kzalloc(sizeof(*attr->sample_attr), GFP_KERNEL);
+       if (!sample_attr)
+               return -ENOMEM;
 
        sample_attr->rate = act->sample.rate;
        sample_attr->group_num = act->sample.psample_group->group_num;
        if (act->sample.truncate)
                sample_attr->trunc_size = act->sample.trunc_size;
 
+       attr->sample_attr = sample_attr;
        flow_flag_set(parse_state->flow, SAMPLE);
 
        return 0;
 
                return -EOPNOTSUPP;
        }
 
-       /* Allocate sample attribute only when there is a sample action and
-        * no errors after parsing.
-        */
-       if (flow_flag_test(flow, SAMPLE)) {
-               attr->sample_attr = kzalloc(sizeof(*attr->sample_attr), GFP_KERNEL);
-               if (!attr->sample_attr)
-                       return -ENOMEM;
-               *attr->sample_attr = parse_state->sample_attr;
-       }
-
        return 0;
 }