Message ID | 20230316033753.2320557-3-liuhangbin@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 2f59823fe696caa844249a90bb3f9aeda69cfe5c |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net/sched: fix parsing of TCA_EXT_WARN_MSG for tc action | expand |
On Wed, Mar 15, 2023 at 11:38 PM Hangbin Liu <liuhangbin@gmail.com> wrote: > > In my previous commit 0349b8779cc9 ("sched: add new attr TCA_EXT_WARN_MSG > to report tc extact message") I didn't notice the tc action use different > enum with filter. So we can't use TCA_EXT_WARN_MSG directly for tc action. > Let's add a TCA_ROOT_EXT_WARN_MSG for tc action specifically and put this > param before going to the TCA_ACT_TAB nest. > > Fixes: 0349b8779cc9 ("sched: add new attr TCA_EXT_WARN_MSG to report tc extact message") > Signed-off-by: Hangbin Liu <liuhangbin@gmail.com> Acked-by: Jamal Hadi Salim <jhs@mojatatu.com> cheers, jamal > --- > v2: rename TCA_ACT_EXT_WARN_MSG to TCA_ROOT_EXT_WARN_MSG > --- > include/uapi/linux/rtnetlink.h | 1 + > net/sched/act_api.c | 8 ++++---- > 2 files changed, 5 insertions(+), 4 deletions(-) > > diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h > index 25a0af57dd5e..51c13cf9c5ae 100644 > --- a/include/uapi/linux/rtnetlink.h > +++ b/include/uapi/linux/rtnetlink.h > @@ -789,6 +789,7 @@ enum { > TCA_ROOT_FLAGS, > TCA_ROOT_COUNT, > TCA_ROOT_TIME_DELTA, /* in msecs */ > + TCA_ROOT_EXT_WARN_MSG, > __TCA_ROOT_MAX, > #define TCA_ROOT_MAX (__TCA_ROOT_MAX - 1) > }; > diff --git a/net/sched/act_api.c b/net/sched/act_api.c > index fce522886099..296fc1afedd8 100644 > --- a/net/sched/act_api.c > +++ b/net/sched/act_api.c > @@ -1589,6 +1589,10 @@ static int tca_get_fill(struct sk_buff *skb, struct tc_action *actions[], > t->tca__pad1 = 0; > t->tca__pad2 = 0; > > + if (extack && extack->_msg && > + nla_put_string(skb, TCA_ROOT_EXT_WARN_MSG, extack->_msg)) > + goto out_nlmsg_trim; > + > nest = nla_nest_start_noflag(skb, TCA_ACT_TAB); > if (!nest) > goto out_nlmsg_trim; > @@ -1598,10 +1602,6 @@ static int tca_get_fill(struct sk_buff *skb, struct tc_action *actions[], > > nla_nest_end(skb, nest); > > - if (extack && extack->_msg && > - nla_put_string(skb, TCA_EXT_WARN_MSG, extack->_msg)) > - goto out_nlmsg_trim; > - > nlh->nlmsg_len = skb_tail_pointer(skb) - b; > > return skb->len; > -- > 2.38.1 >
diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h index 25a0af57dd5e..51c13cf9c5ae 100644 --- a/include/uapi/linux/rtnetlink.h +++ b/include/uapi/linux/rtnetlink.h @@ -789,6 +789,7 @@ enum { TCA_ROOT_FLAGS, TCA_ROOT_COUNT, TCA_ROOT_TIME_DELTA, /* in msecs */ + TCA_ROOT_EXT_WARN_MSG, __TCA_ROOT_MAX, #define TCA_ROOT_MAX (__TCA_ROOT_MAX - 1) }; diff --git a/net/sched/act_api.c b/net/sched/act_api.c index fce522886099..296fc1afedd8 100644 --- a/net/sched/act_api.c +++ b/net/sched/act_api.c @@ -1589,6 +1589,10 @@ static int tca_get_fill(struct sk_buff *skb, struct tc_action *actions[], t->tca__pad1 = 0; t->tca__pad2 = 0; + if (extack && extack->_msg && + nla_put_string(skb, TCA_ROOT_EXT_WARN_MSG, extack->_msg)) + goto out_nlmsg_trim; + nest = nla_nest_start_noflag(skb, TCA_ACT_TAB); if (!nest) goto out_nlmsg_trim; @@ -1598,10 +1602,6 @@ static int tca_get_fill(struct sk_buff *skb, struct tc_action *actions[], nla_nest_end(skb, nest); - if (extack && extack->_msg && - nla_put_string(skb, TCA_EXT_WARN_MSG, extack->_msg)) - goto out_nlmsg_trim; - nlh->nlmsg_len = skb_tail_pointer(skb) - b; return skb->len;
In my previous commit 0349b8779cc9 ("sched: add new attr TCA_EXT_WARN_MSG to report tc extact message") I didn't notice the tc action use different enum with filter. So we can't use TCA_EXT_WARN_MSG directly for tc action. Let's add a TCA_ROOT_EXT_WARN_MSG for tc action specifically and put this param before going to the TCA_ACT_TAB nest. Fixes: 0349b8779cc9 ("sched: add new attr TCA_EXT_WARN_MSG to report tc extact message") Signed-off-by: Hangbin Liu <liuhangbin@gmail.com> --- v2: rename TCA_ACT_EXT_WARN_MSG to TCA_ROOT_EXT_WARN_MSG --- include/uapi/linux/rtnetlink.h | 1 + net/sched/act_api.c | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-)