From: Cheng Yongkang <teel4res@gmail.com>
To: Nikolay Aleksandrov <razor@blackwall.org>,
Ido Schimmel <idosch@nvidia.com>
Cc: "David S . Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@kernel.org>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Simon Horman <horms@kernel.org>,
bridge@lists.linux.dev, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: [BUG] net: bridge: CFM period conversion overflows 32 bits
Date: Thu, 22 Oct 2026 02:15:50 -0700 [thread overview]
Message-ID: <20261022091550.3651455-1-teel4res@gmail.com> (raw)
Hi all,
The unrestricted IFLA_BRIDGE_CFM_CC_CCM_TX_PERIOD u32 is multiplied by
1000000 in 32-bit arithmetic before conversion to jiffies. The same
expression is used for start, update and keep-alive.
On a HZ=100 build this produces:
requested 4295 s -> about 40 ms
requested 2^26 s -> zero
requested 54369991 s -> effectively non-expiring saturation
The netlink request succeeds, and RTM_GETLINK reports the requested
period rather than the encoded duration. CCM transmission can therefore
stop after one frame, stop before emitting any frame, or continue far
longer than requested.
Observed on Linux v7.3, commit
08ab31164c55f20c7a2653de3186ae333470e2c1, CONFIG_HZ=100:
period 10: 3 frames, active for the control interval
period 4295: 1 frame, cleared after 1115 ms
period 2^26: 0 frames, cleared after 1 ms
period 54369991: 4 frames, still active after 3507 ms
All four requests returned success.
The conversion needs a 64-bit intermediate or an explicit bounded
duration check before storing the CCM end time.
An October 2026 iproute2 CFM discussion notes that the CCM-TX period
overflows above 4294 seconds, but I found no corresponding kernel patch
or CVE. Candidate BR-009 is a separate queue/save synchronization race
in the same state fields.
The reproducer and full logs are available on request.
This was found with a multi-agent workflow; the
overflow signatures were reproduced in QEMU.
Thanks,
Cheng Yongkang
reply other threads:[~2026-10-22 9:15 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=20261022091550.3651455-1-teel4res@gmail.com \
--to=teel4res@gmail.com \
--cc=bridge@lists.linux.dev \
--cc=davem@davemloft.net \
--cc=edumazet@kernel.org \
--cc=horms@kernel.org \
--cc=idosch@nvidia.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=razor@blackwall.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®