wifi: mt76: mt7921: fix incorrect type conversion for CLC command
authorMing Yen Hsieh <mingyen.hsieh@mediatek.com>
Tue, 16 Jan 2024 02:48:54 +0000 (10:48 +0800)
committerFelix Fietkau <nbd@nbd.name>
Thu, 22 Feb 2024 08:55:19 +0000 (09:55 +0100)
clc->len is defined as 32 bits in length, so it must also be
operated on with 32 bits, not 16 bits.

Fixes: fa6ad88e023d ("wifi: mt76: mt7921: fix country count limitation for CLC")
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202312112104.Zkc3QUHr-lkp@intel.com/
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c

index f5582477c7e4c7464df34a88a77cea78c161084f..8b4ce32a2cd12f75184d3c9bbe263dc3f91e1c60 100644 (file)
@@ -1272,7 +1272,7 @@ int __mt7921_mcu_set_clc(struct mt792x_dev *dev, u8 *alpha2,
                .mtcl_conf = mt792x_acpi_get_mtcl_conf(&dev->phy, alpha2),
        };
        int ret, valid_cnt = 0;
-       u16 buf_len = 0;
+       u32 buf_len = 0;
        u8 *pos;
 
        if (!clc)
@@ -1283,7 +1283,7 @@ int __mt7921_mcu_set_clc(struct mt792x_dev *dev, u8 *alpha2,
        if (mt76_find_power_limits_node(&dev->mt76))
                req.cap |= CLC_CAP_DTS_EN;
 
-       buf_len = le16_to_cpu(clc->len) - sizeof(*clc);
+       buf_len = le32_to_cpu(clc->len) - sizeof(*clc);
        pos = clc->data;
        while (buf_len > 16) {
                struct mt7921_clc_rule *rule = (struct mt7921_clc_rule *)pos;