From: Xiang Mei <xmei5@asu.edu>
To: Cong Wang <xiyou.wangcong@gmail.com>
Cc: Jamal Hadi Salim <jhs@mojatatu.com>,
security@kernel.org,
Linux Kernel Network Developers <netdev@vger.kernel.org>
Subject: Re: sch_qfq: race conditon on qfq_aggregate (net/sched/sch_qfq.c)
Date: Mon, 30 Jun 2025 19:52:44 -0700 [thread overview]
Message-ID: <aGNNfN_qoqLYm-34@xps> (raw)
In-Reply-To: <aGMZL+dIGdutt3Bf@pop-os.localdomain>
On Mon, Jun 30, 2025 at 04:09:35PM -0700, Cong Wang wrote:
> Hi Xiang,
>
> On Mon, Jun 30, 2025 at 11:49:02AM -0700, Xiang Mei wrote:
> > Thank you very much for your time. We've re-tested the PoC and
> > confirmed it works on the latest kernels (6.12.35, 6.6.95, and
> > 6.16-rc4).
> >
> > To help with reproduction, here are a few notes that might be useful:
> > 1. The QFQ scheduler needs to be compiled into the kernel:
> > $ scripts/config --enable CONFIG_NET_SCHED
> > $ scripts/config --enable CONFIG_NET_SCH_QFQ
> > 2. Since this is a race condition, the test environment should have at
> > least two cores (e.g., -smp cores=2 for QEMU).
> > 3. The PoC was compiled using: `gcc ./poc.c -o ./poc -w --static`
> > 4. Before running the PoC, please check that the network interface
> > "lo" is in the "up" state.
> >
> > Appreciate your feedback and patience.
>
> Thanks for your detailed report and efforts on reproducing it on the
> latest kernel.
>
> I think we may have a bigger problem here, the sch_tree_lock() is to lock
> the datapath, I doubt we really need to use sch_tree_lock() for
> qfq->agg. _If_ it is only for control path, using RTNL lock + RCU lock
> should be sufficient. We need a deeper review on the locking there.
I agree with your point and that's also my initial plan to use RCU lock
to solve this issue but I was concerned about the code complexity since
applying RCU lock on agg objections would be a verbose change on the QFQ
scheduler. I'll try to make an RCU patch as soon as possible.
Thanks,
Xiang
>
> Regards,
> Cong
next prev parent reply other threads:[~2025-07-01 2:52 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CAPpSM+SKOj9U8g_QsGp8M45dtEwvX4B_xdd7C0mP9pYu1b4mzA@mail.gmail.com>
2025-06-29 14:28 ` sch_qfq: race conditon on qfq_aggregate (net/sched/sch_qfq.c) Jamal Hadi Salim
2025-06-30 3:11 ` Xiang Mei
2025-06-30 11:36 ` Jamal Hadi Salim
2025-06-30 18:49 ` Xiang Mei
2025-06-30 23:09 ` Cong Wang
2025-07-01 2:52 ` Xiang Mei [this message]
2025-07-02 19:41 ` Xiang Mei
2025-07-04 4:55 ` Cong Wang
2025-07-05 22:39 ` [PATCH v1] net/sched: sch_qfq: Fix race condition on qfq_aggregate Xiang Mei
2025-07-05 22:49 ` Xiang Mei
2025-07-07 18:05 ` Cong Wang
2025-07-07 17:58 ` Jakub Kicinski
2025-07-07 23:42 ` Xiang Mei
2025-07-08 0:20 ` Jakub Kicinski
2025-07-07 18:03 ` Cong Wang
2025-07-08 0:05 ` Xiang Mei
2025-07-08 3:18 ` Willy Tarreau
2025-07-09 18:08 ` Xiang Mei
2025-07-09 18:06 ` [PATCH v2] " Xiang Mei
2025-07-09 20:19 ` Jakub Kicinski
2025-07-09 21:41 ` Xiang Mei
2025-07-09 21:54 ` Jakub Kicinski
2025-07-10 10:06 ` Xiang Mei
2025-07-10 21:18 ` Cong Wang
2025-07-10 22:45 ` Xiang Mei
2025-07-01 14:02 ` sch_qfq: race conditon on qfq_aggregate (net/sched/sch_qfq.c) Jamal Hadi Salim
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=aGNNfN_qoqLYm-34@xps \
--to=xmei5@asu.edu \
--cc=jhs@mojatatu.com \
--cc=netdev@vger.kernel.org \
--cc=security@kernel.org \
--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.