diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c index c80fc49c0da1..70e95ce28ffd 100644 --- a/net/sched/cls_flower.c +++ b/net/sched/cls_flower.c @@ -467,11 +467,10 @@ static int fl_hw_replace_filter(struct tcf_proto *tp, err = tc_setup_offload_action(&cls_flower.rule->action, &f->exts); if (err) { kfree(cls_flower.rule); - if (skip_sw) { - NL_SET_ERR_MSG_MOD(extack, "Failed to setup flow action"); - return err; - } - return 0; + NL_SET_ERR_MSG_MOD(cls_flower.common.extack, + "Failed to setup flow action"); + + return skip_sw ? err : 0; } err = tc_setup_cb_add(block, tp, TC_SETUP_CLSFLOWER, &cls_flower, @@ -2357,8 +2356,9 @@ static int fl_reoffload(struct tcf_proto *tp, bool add, flow_setup_cb_t *cb, err = tc_setup_offload_action(&cls_flower.rule->action, &f->exts); if (err) { kfree(cls_flower.rule); + NL_SET_ERR_MSG_MOD(cls_flower.common.extack, + "Failed to setup flow action"); if (tc_skip_sw(f->flags)) { - NL_SET_ERR_MSG_MOD(extack, "Failed to setup flow action"); __fl_put(f); return err; }