diff options
author | 2008-04-14 15:10:42 -0700 | |
---|---|---|
committer | 2008-04-14 15:10:42 -0700 | |
commit | 066a3b5b2346febf9a655b444567b7138e3bb939 (patch) | |
tree | 84d824c9b5e31bfaa8a4b06ba3a96f5ac68e14c5 /arch/x86/kernel/cpu/proc.c | |
parent | [BRIDGE]: Fix crash in __ip_route_output_key with bridge netfilter (diff) | |
download | wireguard-linux-066a3b5b2346febf9a655b444567b7138e3bb939.tar.xz wireguard-linux-066a3b5b2346febf9a655b444567b7138e3bb939.zip |
[NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop
TC_H_MAJ(parentid) for root classes is the same as for ingress, and if
ingress qdisc is created qdisc_lookup() returns its pointer (without
ingress NULL is returned). After this all qdisc_lookups give the same,
and we get endless loop. (I don't know how this could hide for so long
- it should trigger with every leaf class deleted if it's qdisc isn't
empty.)
After this fix qdisc_lookup() is omitted both for ingress and root
parents, but looking for root is only wasting a little time here...
Many thanks to Enrico Demarin for finding a test for catching this
bug, which probably bothered quite a lot of admins.
Reported-by: Enrico Demarin <enrico@superclick.com>,
Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
Acked-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/x86/kernel/cpu/proc.c')
0 files changed, 0 insertions, 0 deletions