]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
net: bridge: mrp: fix uninitialised bytes on the wire
authorBaul Lee <baul.lee@xbow.com>
Wed, 29 Jul 2026 13:19:41 +0000 (22:19 +0900)
committerJakub Kicinski <kuba@kernel.org>
Fri, 31 Jul 2026 23:31:16 +0000 (16:31 -0700)
commit63488dba65ef91373ef616575b32eb0eb21459f4
tree124499fcb0d97afb9282f1d68688a46bb29c5776
parent976245094925bab9bc39366b2e9ab44ffcde61d0
net: bridge: mrp: fix uninitialised bytes on the wire

br_mrp_alloc_test_skb() builds MRP test frames on an skb from
dev_alloc_skb(), which does not clear the linear data area.  On the MRA
ring-role branch the sub-option TLV header is appended with

sub_tlv = skb_put(skb, sizeof(*sub_tlv));
sub_tlv->type = BR_MRP_SUB_TLV_HEADER_TEST_AUTO_MGR;

so sub_tlv->length is never written, and the two trailing alignment bytes
are appended with a bare skb_put() that does not clear them either.  The
neighbouring oui and sub_opt regions are explicitly zeroed, so three
uninitialised bytes are left in every MRA MRP_Test frame that goes out.

Put the sub-option TLV header and the alignment padding in a single
skb_put_zero(), which clears both.  The AUTO_MGR sub-TLV carries no
payload, so the zeroed length field is already the value it should have.

Fixes: f7458934b079 ("net: bridge: mrp: Update the Test frames for MRA")
Suggested-by: Nikolay Aleksandrov <razor@blackwall.org>
Cc: stable@vger.kernel.org
Signed-off-by: Baul Lee <baul.lee@xbow.com>
Acked-by: Nikolay Aleksandrov <razor@blackwall.org>
Link: https://patch.msgid.link/20260729131941.10254-1-baul.lee@xbow.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/bridge/br_mrp.c