mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-09-22 09:34:56 +02:00
net: bridge: mrp: fix uninitialised bytes on the wire
commit63488dba65upstream. 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:f7458934b0("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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
9d8a94b48b
commit
06d58b8d2f
+2
-4
@@ -224,11 +224,9 @@ static struct sk_buff *br_mrp_alloc_test_skb(struct br_mrp *mrp,
|
||||
sub_opt = skb_put(skb, sizeof(*sub_opt));
|
||||
memset(sub_opt, 0x0, sizeof(*sub_opt));
|
||||
|
||||
sub_tlv = skb_put(skb, sizeof(*sub_tlv));
|
||||
sub_tlv->type = BR_MRP_SUB_TLV_HEADER_TEST_AUTO_MGR;
|
||||
|
||||
/* 32 bit alligment shall be ensured therefore add 2 bytes */
|
||||
skb_put(skb, MRP_OPT_PADDING);
|
||||
sub_tlv = skb_put_zero(skb, sizeof(*sub_tlv) + MRP_OPT_PADDING);
|
||||
sub_tlv->type = BR_MRP_SUB_TLV_HEADER_TEST_AUTO_MGR;
|
||||
}
|
||||
|
||||
br_mrp_skb_tlv(skb, BR_MRP_TLV_HEADER_END, 0x0);
|
||||
|
||||
Reference in New Issue
Block a user