All of lore.kernel.org
 help / color / mirror / Atom feed
From: Petr Machata <petrm@nvidia.com>
To: Victor Nogueira <victor@mojatatu.com>
Cc: <davem@davemloft.net>, <kuba@kernel.org>, <pabeni@redhat.com>,
	<edumazet@google.com>, <jhs@mojatatu.com>, <jiri@resnulli.us>,
	<xiyou.wangcong@gmail.com>, <horms@kernel.org>,
	<dcaratti@redhat.com>, <petrm@nvidia.com>,
	<netdev@vger.kernel.org>
Subject: Re: [PATCH net 1/2] net/sched: ets: Remove drr class from the active list if it changes to strict
Date: Tue, 9 Dec 2025 14:42:10 +0100	[thread overview]
Message-ID: <87ikefwybc.fsf@nvidia.com> (raw)
In-Reply-To: <20251208190125.1868423-1-victor@mojatatu.com>


Victor Nogueira <victor@mojatatu.com> writes:

> Whenever a user issues an ets qdisc change command, transforming a
> drr class into a strict one, the ets code isn't checking whether that
> class was in the active list and removing it. This means that, if a
> user changes a strict class (which was in the active list) back to a drr
> one, that class will be added twice to the active list [1].
>
> Doing so with the following commands:
>
> tc qdisc add dev lo root handle 1: ets bands 2 strict 1
> tc qdisc add dev lo parent 1:2 handle 20: \
>     tbf rate 8bit burst 100b latency 1s
> tc filter add dev lo parent 1: basic classid 1:2
> ping -c1 -W0.01 -s 56 127.0.0.1
> tc qdisc change dev lo root handle 1: ets bands 2 strict 2
> tc qdisc change dev lo root handle 1: ets bands 2 strict 1
> ping -c1 -W0.01 -s 56 127.0.0.1
>
> Will trigger the following splat with list debug turned on:
>
> [   59.279014][  T365] ------------[ cut here ]------------
> [   59.279452][  T365] list_add double add: new=ffff88801d60e350, prev=ffff88801d60e350, next=ffff88801d60e2c0.
> [   59.280153][  T365] WARNING: CPU: 3 PID: 365 at lib/list_debug.c:35 __list_add_valid_or_report+0x17f/0x220
> [   59.280860][  T365] Modules linked in:
> [   59.281165][  T365] CPU: 3 UID: 0 PID: 365 Comm: tc Not tainted 6.18.0-rc7-00105-g7e9f13163c13-dirty #239 PREEMPT(voluntary)
> [   59.281977][  T365] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
> [   59.282391][  T365] RIP: 0010:__list_add_valid_or_report+0x17f/0x220
> [   59.282842][  T365] Code: 89 c6 e8 d4 b7 0d ff 90 0f 0b 90 90 31 c0 e9 31 ff ff ff 90 48 c7 c7 e0 a0 22 9f 48 89 f2 48 89 c1 4c 89 c6 e8 b2 b7 0d ff 90 <0f> 0b 90 90 31 c0 e9 0f ff ff ff 48 89 f7 48 89 44 24 10 4c 89 44
> ...
> [   59.288812][  T365] Call Trace:
> [   59.289056][  T365]  <TASK>
> [   59.289224][  T365]  ? srso_alias_return_thunk+0x5/0xfbef5
> [   59.289546][  T365]  ets_qdisc_change+0xd2b/0x1e80
> [   59.289891][  T365]  ? __lock_acquire+0x7e7/0x1be0
> [   59.290223][  T365]  ? __pfx_ets_qdisc_change+0x10/0x10
> [   59.290546][  T365]  ? srso_alias_return_thunk+0x5/0xfbef5
> [   59.290898][  T365]  ? __mutex_trylock_common+0xda/0x240
> [   59.291228][  T365]  ? __pfx___mutex_trylock_common+0x10/0x10
> [   59.291655][  T365]  ? srso_alias_return_thunk+0x5/0xfbef5
> [   59.291993][  T365]  ? srso_alias_return_thunk+0x5/0xfbef5
> [   59.292313][  T365]  ? trace_contention_end+0xc8/0x110
> [   59.292656][  T365]  ? srso_alias_return_thunk+0x5/0xfbef5
> [   59.293022][  T365]  ? srso_alias_return_thunk+0x5/0xfbef5
> [   59.293351][  T365]  tc_modify_qdisc+0x63a/0x1cf0
>
> Fix this by always checking and removing an ets class from the active list
> when changing it to strict.
>
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/tree/net/sched/sch_ets.c?id=ce052b9402e461a9aded599f5b47e76bc727f7de#n663
>
> Fixes: cd9b50adc6bb9 ("net/sched: ets: fix crash when flipping from 'strict' to 'quantum'")
> Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
> Signed-off-by: Victor Nogueira <victor@mojatatu.com>

Reviewed-by: Petr Machata <petrm@nvidia.com>

  parent reply	other threads:[~2025-12-09 14:00 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-08 19:01 [PATCH net 1/2] net/sched: ets: Remove drr class from the active list if it changes to strict Victor Nogueira
2025-12-08 19:01 ` [PATCH net 2/2] selftests/tc-testing: Create tests to exercise ets classes active list misplacements Victor Nogueira
2025-12-09 14:00   ` Petr Machata
2025-12-09 13:42 ` Petr Machata [this message]
2025-12-11  9:40 ` [PATCH net 1/2] net/sched: ets: Remove drr class from the active list if it changes to strict patchwork-bot+netdevbpf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ikefwybc.fsf@nvidia.com \
    --to=petrm@nvidia.com \
    --cc=davem@davemloft.net \
    --cc=dcaratti@redhat.com \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=jhs@mojatatu.com \
    --cc=jiri@resnulli.us \
    --cc=kuba@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=victor@mojatatu.com \
    --cc=xiyou.wangcong@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.