mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
selftests/tc-testing: Add tests that force red and sfb to dequeue from child's gso_skb
Create 4 test cases: - Force red to dequeue from its child's gso_skb with qfq leaf - Force sfb to dequeue from its child's gso_skb with qfq leaf - Force red to dequeue from its child's gso_skb with dualpi2 leaf - Force sfb to dequeue from its child's gso_skb with dualpi2 leaf All of them have tbf followed by red (or sfb) followed by qfq (or dualpi2). Since tbf calls its child's peek followed by qdisc_dequeue_peeked, it will force red/sfb to call their child's peek. In this case, since the child (qfq/dualpi2) has qdisc_peek_dequeued as its peek callback, the packet will be stored in its gso_skb queue. During the subsequent call to qdisc_dequeue_peeked, red/sfb will have to dequeue from the child's gso_skb to retrieve the packet. Not doing so will cause a NULL ptr deref which was happening before a recent fix. Acked-by: Jamal Hadi Salim <jhs@mojatatu.com> Signed-off-by: Victor Nogueira <victor@mojatatu.com> Link: https://patch.msgid.link/20260430152957.194015-4-jhs@mojatatu.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
1b9bc71153
commit
3a3a30c14d
@@ -1136,5 +1136,153 @@
|
||||
"teardown": [
|
||||
"$TC qdisc del dev $DUMMY handle 1: root"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "7a5f",
|
||||
"name": "Force red to dequeue from its child's gso_skb with qfq leaf",
|
||||
"category": [
|
||||
"qdisc",
|
||||
"tbf",
|
||||
"red",
|
||||
"qfq"
|
||||
],
|
||||
"plugins": {
|
||||
"requires": "nsPlugin"
|
||||
},
|
||||
"setup": [
|
||||
"$IP link set dev $DUMMY up || true",
|
||||
"$IP addr add 10.10.11.10/24 dev $DUMMY || true",
|
||||
"$TC qdisc add dev $DUMMY root handle 1: tbf rate 88bit burst 1661b peakrate 2257333 minburst 1024 limit 7b",
|
||||
"$TC qdisc add dev $DUMMY parent 1: handle 2: red limit 757 min 16 max 24 avpkt 16",
|
||||
"$TC qdisc add dev $DUMMY parent 2: handle 3: qfq",
|
||||
"$TC class add dev $DUMMY classid 3:1 parent 3: qfq maxpkt 512 weight 1",
|
||||
"$TC filter add dev $DUMMY parent 3: protocol ip prio 1 matchall classid 3:1 action ok"
|
||||
],
|
||||
"cmdUnderTest": "ping -c 1 10.10.10.1 -W0.01 -I$DUMMY || true",
|
||||
"expExitCode": "0",
|
||||
"verifyCmd": "$TC -s -j qdisc ls dev $DUMMY parent 1:",
|
||||
"matchJSON": [
|
||||
{
|
||||
"kind": "red",
|
||||
"handle": "2:",
|
||||
"bytes": 98,
|
||||
"packets": 1,
|
||||
"backlog": 0,
|
||||
"qlen": 0
|
||||
}
|
||||
],
|
||||
"teardown": [
|
||||
"$TC qdisc del dev $DUMMY handle 1: root"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "cdae",
|
||||
"name": "Force sfb to dequeue from its child's gso_skb with qfq leaf",
|
||||
"category": [
|
||||
"qdisc",
|
||||
"tbf",
|
||||
"sfb",
|
||||
"qfq"
|
||||
],
|
||||
"plugins": {
|
||||
"requires": "nsPlugin"
|
||||
},
|
||||
"setup": [
|
||||
"$IP link set dev $DUMMY up || true",
|
||||
"$IP addr add 10.10.11.10/24 dev $DUMMY || true",
|
||||
"$TC qdisc add dev $DUMMY root handle 1: tbf rate 88bit burst 1661b peakrate 2257333 minburst 1024 limit 7b",
|
||||
"$TC qdisc add dev $DUMMY parent 1: handle 2: sfb",
|
||||
"$TC qdisc add dev $DUMMY parent 2: handle 3: qfq",
|
||||
"$TC class add dev $DUMMY classid 3:1 parent 3: qfq maxpkt 512 weight 1",
|
||||
"$TC filter add dev $DUMMY parent 3: protocol ip prio 1 matchall classid 3:1 action ok"
|
||||
],
|
||||
"cmdUnderTest": "ping -c 1 10.10.10.1 -W0.01 -I$DUMMY || true",
|
||||
"expExitCode": "0",
|
||||
"verifyCmd": "$TC -s -j qdisc ls dev $DUMMY parent 1:",
|
||||
"matchJSON": [
|
||||
{
|
||||
"kind": "sfb",
|
||||
"handle": "2:",
|
||||
"bytes": 98,
|
||||
"packets": 1,
|
||||
"backlog": 0,
|
||||
"qlen": 0
|
||||
}
|
||||
],
|
||||
"teardown": [
|
||||
"$TC qdisc del dev $DUMMY handle 1: root"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "291d",
|
||||
"name": "Force red to dequeue from its child's gso_skb with dualpi2 leaf",
|
||||
"category": [
|
||||
"qdisc",
|
||||
"tbf",
|
||||
"red",
|
||||
"dualpi2"
|
||||
],
|
||||
"plugins": {
|
||||
"requires": "nsPlugin"
|
||||
},
|
||||
"setup": [
|
||||
"$IP link set dev $DUMMY up || true",
|
||||
"$IP addr add 10.10.11.10/24 dev $DUMMY || true",
|
||||
"$TC qdisc add dev $DUMMY root handle 1: tbf rate 88bit burst 1661b peakrate 2257333 minburst 1024 limit 7b",
|
||||
"$TC qdisc add dev $DUMMY parent 1: handle 2: red limit 757 min 16 max 24 avpkt 16",
|
||||
"$TC qdisc add dev $DUMMY parent 2: handle 3: dualpi2"
|
||||
],
|
||||
"cmdUnderTest": "ping -c 1 10.10.10.1 -W0.01 -I$DUMMY || true",
|
||||
"expExitCode": "0",
|
||||
"verifyCmd": "$TC -s -j qdisc ls dev $DUMMY parent 1:",
|
||||
"matchJSON": [
|
||||
{
|
||||
"kind": "red",
|
||||
"handle": "2:",
|
||||
"bytes": 98,
|
||||
"packets": 1,
|
||||
"backlog": 0,
|
||||
"qlen": 0
|
||||
}
|
||||
],
|
||||
"teardown": [
|
||||
"$TC qdisc del dev $DUMMY handle 1: root"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "9c6d",
|
||||
"name": "Force sfb to dequeue from its child's gso_skb with dualpi2 leaf",
|
||||
"category": [
|
||||
"qdisc",
|
||||
"tbf",
|
||||
"sfb",
|
||||
"dualpi2"
|
||||
],
|
||||
"plugins": {
|
||||
"requires": "nsPlugin"
|
||||
},
|
||||
"setup": [
|
||||
"$IP link set dev $DUMMY up || true",
|
||||
"$IP addr add 10.10.11.10/24 dev $DUMMY || true",
|
||||
"$TC qdisc add dev $DUMMY root handle 1: tbf rate 88bit burst 1661b peakrate 2257333 minburst 1024 limit 7b",
|
||||
"$TC qdisc add dev $DUMMY parent 1: handle 2: sfb",
|
||||
"$TC qdisc add dev $DUMMY parent 2: handle 3: dualpi2"
|
||||
],
|
||||
"cmdUnderTest": "ping -c 1 10.10.10.1 -W0.01 -I$DUMMY || true",
|
||||
"expExitCode": "0",
|
||||
"verifyCmd": "$TC -s -j qdisc ls dev $DUMMY parent 1:",
|
||||
"matchJSON": [
|
||||
{
|
||||
"kind": "sfb",
|
||||
"handle": "2:",
|
||||
"bytes": 98,
|
||||
"packets": 1,
|
||||
"backlog": 0,
|
||||
"qlen": 0
|
||||
}
|
||||
],
|
||||
"teardown": [
|
||||
"$TC qdisc del dev $DUMMY handle 1: root"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user