[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAM0EoMmG6fMxi_BaX5Rn7EEZHbMh=eea_+J50G6-OtHfWobSvQ@mail.gmail.com>
Date: Tue, 8 Jul 2025 14:50:34 -0400
From: Jamal Hadi Salim <jhs@...atatu.com>
To: William Liu <will@...lsroot.io>
Cc: netdev@...r.kernel.org, xiyou.wangcong@...il.com, victor@...atatu.com,
pctammela@...atatu.com, pabeni@...hat.com, kuba@...nel.org,
stephen@...workplumber.org, dcaratti@...hat.com, savy@...t3mfailure.io,
jiri@...nulli.us, davem@...emloft.net, edumazet@...gle.com, horms@...nel.org
Subject: Re: [PATCH net v5 2/2] selftests/tc-testing: Add tests for
restrictions on netem duplication
On Tue, Jul 8, 2025 at 12:44 PM William Liu <will@...lsroot.io> wrote:
>
> Ensure that a duplicating netem cannot exist in a tree with other netems
> in both qdisc addition and change. This is meant to prevent the soft
> lockup and OOM loop scenario discussed in [1]. Also adjust a HFSC's
> re-entrancy test case with netem for this new restriction - KASAN
> still triggers upon its failure.
>
> [1] https://lore.kernel.org/netdev/8DuRWwfqjoRDLDmBMlIfbrsZg9Gx50DHJc1ilxsEBNe2D6NMoigR_eIRIG0LOjMc3r10nUUZtArXx4oZBIdUfZQrwjcQhdinnMis_0G7VEk=@willsroot.io/
>
> Signed-off-by: William Liu <will@...lsroot.io>
> Reviewed-by: Savino Dicanosa <savy@...t3mfailure.io>
Acked-by: Jamal Hadi Salim <jhs@...atatu.com>
cheers,
jamal
> v1 -> v2:
> - Fixed existing test case for new restrictions
> - Add test cases
> - Use dummy instead of lo
> ---
> .../tc-testing/tc-tests/infra/qdiscs.json | 5 +-
> .../tc-testing/tc-tests/qdiscs/netem.json | 81 +++++++++++++++++++
> 2 files changed, 83 insertions(+), 3 deletions(-)
>
> diff --git a/tools/testing/selftests/tc-testing/tc-tests/infra/qdiscs.json b/tools/testing/selftests/tc-testing/tc-tests/infra/qdiscs.json
> index 9aa44d8176d9..9acc88297484 100644
> --- a/tools/testing/selftests/tc-testing/tc-tests/infra/qdiscs.json
> +++ b/tools/testing/selftests/tc-testing/tc-tests/infra/qdiscs.json
> @@ -478,7 +478,6 @@
> "$TC qdisc add dev $DUMMY parent 1:1 handle 2:0 netem duplicate 100%",
> "$TC filter add dev $DUMMY parent 1:0 protocol ip prio 1 u32 match ip dst 10.10.10.1/32 flowid 1:1",
> "$TC class add dev $DUMMY parent 1:0 classid 1:2 hfsc ls m2 10Mbit",
> - "$TC qdisc add dev $DUMMY parent 1:2 handle 3:0 netem duplicate 100%",
> "$TC filter add dev $DUMMY parent 1:0 protocol ip prio 2 u32 match ip dst 10.10.10.2/32 flowid 1:2",
> "ping -c 1 10.10.10.1 -I$DUMMY > /dev/null || true",
> "$TC filter del dev $DUMMY parent 1:0 protocol ip prio 1",
> @@ -491,8 +490,8 @@
> {
> "kind": "hfsc",
> "handle": "1:",
> - "bytes": 392,
> - "packets": 4
> + "bytes": 294,
> + "packets": 3
> }
> ],
> "matchCount": "1",
> diff --git a/tools/testing/selftests/tc-testing/tc-tests/qdiscs/netem.json b/tools/testing/selftests/tc-testing/tc-tests/qdiscs/netem.json
> index 3c4444961488..718d2df2aafa 100644
> --- a/tools/testing/selftests/tc-testing/tc-tests/qdiscs/netem.json
> +++ b/tools/testing/selftests/tc-testing/tc-tests/qdiscs/netem.json
> @@ -336,5 +336,86 @@
> "teardown": [
> "$TC qdisc del dev $DUMMY handle 1: root"
> ]
> + },
> + {
> + "id": "d34d",
> + "name": "NETEM test qdisc duplication restriction in qdisc tree in netem_change root",
> + "category": ["qdisc", "netem"],
> + "plugins": {
> + "requires": "nsPlugin"
> + },
> + "setup": [
> + "$TC qdisc add dev $DUMMY root handle 1: netem limit 1",
> + "$TC qdisc add dev $DUMMY parent 1: handle 2: netem limit 1"
> + ],
> + "cmdUnderTest": "$TC qdisc change dev $DUMMY handle 1: netem duplicate 50%",
> + "expExitCode": "2",
> + "verifyCmd": "$TC -s qdisc show dev $DUMMY",
> + "matchPattern": "qdisc netem",
> + "matchCount": "2",
> + "teardown": [
> + "$TC qdisc del dev $DUMMY handle 1:0 root"
> + ]
> + },
> + {
> + "id": "b33f",
> + "name": "NETEM test qdisc duplication restriction in qdisc tree in netem_change non-root",
> + "category": ["qdisc", "netem"],
> + "plugins": {
> + "requires": "nsPlugin"
> + },
> + "setup": [
> + "$TC qdisc add dev $DUMMY root handle 1: netem limit 1",
> + "$TC qdisc add dev $DUMMY parent 1: handle 2: netem limit 1"
> + ],
> + "cmdUnderTest": "$TC qdisc change dev $DUMMY handle 2: netem duplicate 50%",
> + "expExitCode": "2",
> + "verifyCmd": "$TC -s qdisc show dev $DUMMY",
> + "matchPattern": "qdisc netem",
> + "matchCount": "2",
> + "teardown": [
> + "$TC qdisc del dev $DUMMY handle 1:0 root"
> + ]
> + },
> + {
> + "id": "cafe",
> + "name": "NETEM test qdisc duplication restriction in qdisc tree",
> + "category": ["qdisc", "netem"],
> + "plugins": {
> + "requires": "nsPlugin"
> + },
> + "setup": [
> + "$TC qdisc add dev $DUMMY root handle 1: netem limit 1 duplicate 100%"
> + ],
> + "cmdUnderTest": "$TC qdisc add dev $DUMMY parent 1: handle 2: netem duplicate 100%",
> + "expExitCode": "2",
> + "verifyCmd": "$TC -s qdisc show dev $DUMMY",
> + "matchPattern": "qdisc netem",
> + "matchCount": "1",
> + "teardown": [
> + "$TC qdisc del dev $DUMMY handle 1:0 root"
> + ]
> + },
> + {
> + "id": "1337",
> + "name": "NETEM test qdisc duplication restriction in qdisc tree across branches",
> + "category": ["qdisc", "netem"],
> + "plugins": {
> + "requires": "nsPlugin"
> + },
> + "setup": [
> + "$TC qdisc add dev $DUMMY parent root handle 1:0 hfsc",
> + "$TC class add dev $DUMMY parent 1:0 classid 1:1 hfsc rt m2 10Mbit",
> + "$TC qdisc add dev $DUMMY parent 1:1 handle 2:0 netem",
> + "$TC class add dev $DUMMY parent 1:0 classid 1:2 hfsc rt m2 10Mbit"
> + ],
> + "cmdUnderTest": "$TC qdisc add dev $DUMMY parent 1:2 handle 3:0 netem duplicate 100%",
> + "expExitCode": "2",
> + "verifyCmd": "$TC -s qdisc show dev $DUMMY",
> + "matchPattern": "qdisc netem",
> + "matchCount": "1",
> + "teardown": [
> + "$TC qdisc del dev $DUMMY handle 1:0 root"
> + ]
> }
> ]
> --
> 2.43.0
>
>
Powered by blists - more mailing lists