]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: mt76: mt7921: fix a potential clc buffer length underflow
authorLeon Yen <leon.yen@mediatek.com>
Thu, 9 Oct 2025 02:01:58 +0000 (10:01 +0800)
committerFelix Fietkau <nbd@nbd.name>
Mon, 23 Mar 2026 09:23:00 +0000 (09:23 +0000)
The buf_len is used to limit the iterations for retrieving the country
power setting and may underflow under certain conditions due to changes
in the power table in CLC.

This underflow leads to an almost infinite loop or an invalid power
setting resulting in driver initialization failure.

Cc: stable@vger.kernel.org
Fixes: fa6ad88e023d ("wifi: mt76: mt7921: fix country count limitation for CLC")
Signed-off-by: Leon Yen <leon.yen@mediatek.com>
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Link: https://patch.msgid.link/20251009020158.1923429-1-mingyen.hsieh@mediatek.com
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c

index 833d0ab6423034bc1079e3db3c4e15741d229305..8442dbd2ee23f89f0c9ef99e0930b7770ceafda4 100644 (file)
@@ -1353,6 +1353,9 @@ int __mt7921_mcu_set_clc(struct mt792x_dev *dev, u8 *alpha2,
                u16 len = le16_to_cpu(rule->len);
                u16 offset = len + sizeof(*rule);
 
+               if (buf_len < offset)
+                       break;
+
                pos += offset;
                buf_len -= offset;
                if (rule->alpha2[0] != alpha2[0] ||