Search Linux Wireless

RE: [PATCH] wifi: mt76: mt7925: fix get wrong chip cap from incorrect pointer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Mingyen Hsieh <mingyen.hsieh@xxxxxxxxxxxx> wrote:
> 
> Use tlv instead of skb, because using skb will get invalid data
> with wrong offset.
> 
> Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
> Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@xxxxxxxxxxxx>
> ---
>  drivers/net/wireless/mediatek/mt76/mt7925/mcu.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
> b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
> index 0c2a2337c313..9b6aff463063 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
> @@ -823,7 +823,7 @@ mt7925_mcu_get_nic_capability(struct mt792x_dev *dev)
>                         mt7925_mcu_parse_phy_cap(dev, tlv->data);
>                         break;
>                 case MT_NIC_CAP_CHIP_CAP:
> -                       memcpy(&dev->phy.chip_cap, (void *)skb->data, sizeof(u64));
> +                       memcpy(&dev->phy.chip_cap, (void *)tlv->data, sizeof(u64));

chip_cap is u64 in CPU order, and tlv->data coming from firmware should be 
little-endian order. So using le64_to_cpu() might be more suitable: 

dev->phy.chip_cap = le64_to_cpu((__le64 *)tlv->data);


>                         break;
>                 case MT_NIC_CAP_EML_CAP:
>                         mt7925_mcu_parse_eml_cap(dev, tlv->data);
> --
> 2.45.2
> 






[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux