* [PATCH net] net: dsa: tag_brcm: legacy FCS: request needed tailroom
@ 2026-09-08 16:50 Weiming Shi
2026-09-08 17:09 ` Florian Fainelli
2026-09-09 20:40 ` patchwork-bot+netdevbpf
0 siblings, 2 replies; 3+ messages in thread
From: Weiming Shi @ 2026-09-08 16:50 UTC (permalink / raw)
To: Florian Fainelli, Jonas Gorski, Andrew Lunn, Vladimir Oltean,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Simon Horman
Cc: netdev, linux-kernel, Álvaro Fernández Rojas,
Xiang Mei, co+28eef7d8af9428e6, stable
The legacy FCS tagger calculates the CRC over skb->len bytes starting at
skb->data. When a nonlinear skb reaches the tagger, this reads past the
linear head into unrelated slab memory.
The tagger appends an Ethernet FCS but does not declare that tailroom. As a
result, DSA leaves NETIF_F_SG and NETIF_F_FRAGLIST enabled on the user
port, and nonlinear skbs can reach the CRC calculation.
Declare the required tailroom. DSA will then clear those features and the
networking core will linearize skbs before the tagger runs.
A KASAN-enabled dsa_loop test using this tagger reports:
BUG: KASAN: slab-out-of-bounds in crc32_le
Read of size 1 at addr ffff8880397086c0 by task exp/135
Call Trace:
crc32_le (lib/crc/crc32-main.c:38)
brcm_leg_fcs_tag_xmit (net/dsa/tag_brcm.c:343)
dsa_user_xmit (net/dsa/user.c:942)
dev_hard_start_xmit (net/core/dev.c:3937)
__dev_queue_xmit (net/core/dev.c:4926)
packet_sendmsg (net/packet/af_packet.c:3110)
__sys_sendto (net/socket.c:2281)
The buggy address belongs to the object at ffff888039708400
which belongs to the cache skbuff_small_head of size 704
The buggy address is located 0 bytes to the right of
allocated 704-byte region [ffff888039708400, ffff8880397086c0)
Fixes: ef07df397a62 ("net: dsa: tag_brcm: add support for legacy FCS tags")
Cc: stable@vger.kernel.org
Reported-by: co+28eef7d8af9428e6@bugs.sh
Closes: https://lore.kernel.org/all/jH6u350kaBRuqklDjd3k3BW4nWzp0tYRjq3p%40bugs.sh/
Assisted-by: Claude:gpt-5
Signed-off-by: Weiming Shi <bestswngs@gmail.com>
---
net/dsa/tag_brcm.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/net/dsa/tag_brcm.c b/net/dsa/tag_brcm.c
index 411e3b57d16af..b7c49822ca888 100644
--- a/net/dsa/tag_brcm.c
+++ b/net/dsa/tag_brcm.c
@@ -373,6 +373,7 @@ static const struct dsa_device_ops brcm_legacy_fcs_netdev_ops = {
.xmit = brcm_leg_fcs_tag_xmit,
.rcv = brcm_leg_tag_rcv,
.needed_headroom = BRCM_LEG_TAG_LEN,
+ .needed_tailroom = ETH_FCS_LEN,
};
DSA_TAG_DRIVER(brcm_legacy_fcs_netdev_ops);
--
2.55.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net] net: dsa: tag_brcm: legacy FCS: request needed tailroom
2026-09-08 16:50 [PATCH net] net: dsa: tag_brcm: legacy FCS: request needed tailroom Weiming Shi
@ 2026-09-08 17:09 ` Florian Fainelli
2026-09-09 20:40 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: Florian Fainelli @ 2026-09-08 17:09 UTC (permalink / raw)
To: Weiming Shi, Florian Fainelli, Jonas Gorski, Andrew Lunn,
Vladimir Oltean, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman
Cc: netdev, linux-kernel, Álvaro Fernández Rojas,
Xiang Mei, co+28eef7d8af9428e6, stable
On 9/8/26 09:50, Weiming Shi wrote:
> The legacy FCS tagger calculates the CRC over skb->len bytes starting at
> skb->data. When a nonlinear skb reaches the tagger, this reads past the
> linear head into unrelated slab memory.
>
> The tagger appends an Ethernet FCS but does not declare that tailroom. As a
> result, DSA leaves NETIF_F_SG and NETIF_F_FRAGLIST enabled on the user
> port, and nonlinear skbs can reach the CRC calculation.
>
> Declare the required tailroom. DSA will then clear those features and the
> networking core will linearize skbs before the tagger runs.
>
> A KASAN-enabled dsa_loop test using this tagger reports:
>
> BUG: KASAN: slab-out-of-bounds in crc32_le
> Read of size 1 at addr ffff8880397086c0 by task exp/135
>
> Call Trace:
> crc32_le (lib/crc/crc32-main.c:38)
> brcm_leg_fcs_tag_xmit (net/dsa/tag_brcm.c:343)
> dsa_user_xmit (net/dsa/user.c:942)
> dev_hard_start_xmit (net/core/dev.c:3937)
> __dev_queue_xmit (net/core/dev.c:4926)
> packet_sendmsg (net/packet/af_packet.c:3110)
> __sys_sendto (net/socket.c:2281)
>
> The buggy address belongs to the object at ffff888039708400
> which belongs to the cache skbuff_small_head of size 704
> The buggy address is located 0 bytes to the right of
> allocated 704-byte region [ffff888039708400, ffff8880397086c0)
>
> Fixes: ef07df397a62 ("net: dsa: tag_brcm: add support for legacy FCS tags")
> Cc: stable@vger.kernel.org
> Reported-by: co+28eef7d8af9428e6@bugs.sh
> Closes: https://lore.kernel.org/all/jH6u350kaBRuqklDjd3k3BW4nWzp0tYRjq3p%40bugs.sh/
> Assisted-by: Claude:gpt-5
> Signed-off-by: Weiming Shi <bestswngs@gmail.com>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
--
Florian
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net] net: dsa: tag_brcm: legacy FCS: request needed tailroom
2026-09-08 16:50 [PATCH net] net: dsa: tag_brcm: legacy FCS: request needed tailroom Weiming Shi
2026-09-08 17:09 ` Florian Fainelli
@ 2026-09-09 20:40 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-09-09 20:40 UTC (permalink / raw)
To: Weiming Shi
Cc: florian.fainelli, jonas.gorski, andrew, olteanv, davem, edumazet,
kuba, pabeni, horms, netdev, linux-kernel, noltari, xmei5,
co+28eef7d8af9428e6, stable
Hello:
This patch was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Wed, 9 Sep 2026 00:50:47 +0800 you wrote:
> The legacy FCS tagger calculates the CRC over skb->len bytes starting at
> skb->data. When a nonlinear skb reaches the tagger, this reads past the
> linear head into unrelated slab memory.
>
> The tagger appends an Ethernet FCS but does not declare that tailroom. As a
> result, DSA leaves NETIF_F_SG and NETIF_F_FRAGLIST enabled on the user
> port, and nonlinear skbs can reach the CRC calculation.
>
> [...]
Here is the summary with links:
- [net] net: dsa: tag_brcm: legacy FCS: request needed tailroom
https://git.kernel.org/netdev/net/c/5be081b83abd
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-09-09 20:41 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-08 16:50 [PATCH net] net: dsa: tag_brcm: legacy FCS: request needed tailroom Weiming Shi
2026-09-08 17:09 ` Florian Fainelli
2026-09-09 20:40 ` patchwork-bot+netdevbpf
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®