diff options
author | Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> | 2019-12-04 12:06:26 +0000 |
---|---|---|
committer | Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> | 2019-12-04 12:06:26 +0000 |
commit | 89b8dd62ce44e994aa1bccbc006945b1c124ab09 (patch) | |
tree | 0635f64564508ed15cd594ecd85b80fad52de022 /target/linux/generic/backport-4.14 | |
parent | 1d608a10a0d663d10c883c7527d1844abb92d89b (diff) | |
download | upstream-89b8dd62ce44e994aa1bccbc006945b1c124ab09.tar.gz upstream-89b8dd62ce44e994aa1bccbc006945b1c124ab09.tar.bz2 upstream-89b8dd62ce44e994aa1bccbc006945b1c124ab09.zip |
kernel: act_ctinfo: fix updated backport on 4.14
It turns out my 4.14 testing had a rather large flaw in it and the
'extack' mechanism isn't quite ready. Remove the extack stuff from this
backport.
Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
Diffstat (limited to 'target/linux/generic/backport-4.14')
-rw-r--r-- | target/linux/generic/backport-4.14/380-v5.3-net-sched-Introduce-act_ctinfo-action.patch | 29 |
1 files changed, 8 insertions, 21 deletions
diff --git a/target/linux/generic/backport-4.14/380-v5.3-net-sched-Introduce-act_ctinfo-action.patch b/target/linux/generic/backport-4.14/380-v5.3-net-sched-Introduce-act_ctinfo-action.patch index 1053742e6e..64f6620b2a 100644 --- a/target/linux/generic/backport-4.14/380-v5.3-net-sched-Introduce-act_ctinfo-action.patch +++ b/target/linux/generic/backport-4.14/380-v5.3-net-sched-Introduce-act_ctinfo-action.patch @@ -1,4 +1,4 @@ -From a06ece503d941eefa92ba48dc981ccaa4093330b Mon Sep 17 00:00:00 2001 +From 147b0d133b53635db0cc572294840652c9c7b662 Mon Sep 17 00:00:00 2001 From: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> Date: Wed, 13 Mar 2019 20:54:49 +0000 Subject: [PATCH] net: sched: Backport Introduce act_ctinfo action @@ -112,8 +112,8 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> include/uapi/linux/tc_act/tc_ctinfo.h | 29 ++ net/sched/Kconfig | 13 + net/sched/Makefile | 1 + - net/sched/act_ctinfo.c | 407 ++++++++++++++++++++++++++ - 6 files changed, 485 insertions(+), 1 deletion(-) + net/sched/act_ctinfo.c | 394 ++++++++++++++++++++++++++ + 6 files changed, 472 insertions(+), 1 deletion(-) create mode 100644 include/net/tc_act/tc_ctinfo.h create mode 100644 include/uapi/linux/tc_act/tc_ctinfo.h create mode 100644 net/sched/act_ctinfo.c @@ -232,7 +232,7 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> obj-$(CONFIG_NET_IFE_SKBMARK) += act_meta_mark.o --- /dev/null +++ b/net/sched/act_ctinfo.c -@@ -0,0 +1,407 @@ +@@ -0,0 +1,394 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* net/sched/act_ctinfo.c netfilter ctinfo connmark actions + * @@ -400,20 +400,15 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> + u8 dscpmaskshift; + int ret = 0, err; + -+ if (!nla) { -+ NL_SET_ERR_MSG_MOD(extack, "ctinfo requires attributes to be passed"); ++ if (!nla) + return -EINVAL; -+ } + + err = nla_parse_nested(tb, TCA_CTINFO_MAX, nla, ctinfo_policy, NULL); + if (err < 0) + return err; + -+ if (!tb[TCA_CTINFO_ACT]) { -+ NL_SET_ERR_MSG_MOD(extack, -+ "Missing required TCA_CTINFO_ACT attribute"); ++ if (!tb[TCA_CTINFO_ACT]) + return -EINVAL; -+ } + actparm = nla_data(tb[TCA_CTINFO_ACT]); + + /* do some basic validation here before dynamically allocating things */ @@ -422,21 +417,13 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> + dscpmask = nla_get_u32(tb[TCA_CTINFO_PARMS_DSCP_MASK]); + /* need contiguous 6 bit mask */ + dscpmaskshift = dscpmask ? __ffs(dscpmask) : 0; -+ if ((~0 & (dscpmask >> dscpmaskshift)) != 0x3f) { -+ NL_SET_ERR_MSG_ATTR(extack, -+ tb[TCA_CTINFO_PARMS_DSCP_MASK], -+ "dscp mask must be 6 contiguous bits"); ++ if ((~0 & (dscpmask >> dscpmaskshift)) != 0x3f) + return -EINVAL; -+ } + dscpstatemask = tb[TCA_CTINFO_PARMS_DSCP_STATEMASK] ? + nla_get_u32(tb[TCA_CTINFO_PARMS_DSCP_STATEMASK]) : 0; + /* mask & statemask must not overlap */ -+ if (dscpmask & dscpstatemask) { -+ NL_SET_ERR_MSG_ATTR(extack, -+ tb[TCA_CTINFO_PARMS_DSCP_STATEMASK], -+ "dscp statemask must not overlap dscp mask"); ++ if (dscpmask & dscpstatemask) + return -EINVAL; -+ } + } + /* done the validation:now to the actual action allocation */ + err = tcf_idr_check(tn, actparm->index, a, bind); |