Search Linux Wireless

Re: [PATCH 1/8] wifi: wilc1000: fix incorrect type assignment sparse warning

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

 



Hi Kalle,

On 27/07/22 18:30, Kalle Valo wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>
> <Ajay.Kathat@xxxxxxxxxxxxx> writes:
>
>> From: Ajay Singh <ajay.kathat@xxxxxxxxxxxxx>
>>
>> Sparse reported below warning
>>>> drivers/net/wireless/microchip/wilc1000/cfg80211.c:361:42: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int key_mgmt_suite @@     got restricted __be32 [usertype] @@
>> 'key_mgmt_suite' value is expected in big-endian format. After receiving
>> mgmt_suite value from wpa_s convert to cpu endianness because the same
>> value is return back using cfg80211_external_auth_request(). Use
>> be32_to_cpu() conversion API to avoid the sparse warning.
>>
>> Reported-by: kernel test robot <lkp@xxxxxxxxx>
>> Fixes: c5b331d4f550fb78 ("wifi: wilc1000: add WPA3 SAE support")
>> Signed-off-by: Ajay Singh <ajay.kathat@xxxxxxxxxxxxx>
>> ---
>>   drivers/net/wireless/microchip/wilc1000/cfg80211.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/wireless/microchip/wilc1000/cfg80211.c b/drivers/net/wireless/microchip/wilc1000/cfg80211.c
>> index 5c2c7f1dbffd..19862d932f1f 100644
>> --- a/drivers/net/wireless/microchip/wilc1000/cfg80211.c
>> +++ b/drivers/net/wireless/microchip/wilc1000/cfg80211.c
>> @@ -359,7 +359,7 @@ static int connect(struct wiphy *wiphy, struct net_device *dev,
>>                        memcpy(vif->auth.ssid.ssid, sme->ssid, sme->ssid_len);
>>                        vif->auth.ssid.ssid_len = sme->ssid_len;
>>                }
>> -             vif->auth.key_mgmt_suite = cpu_to_be32(sme->crypto.akm_suites[0]);
>> +             vif->auth.key_mgmt_suite = be32_to_cpu((__force __be32)sme->crypto.akm_suites[0]);
> No time to investigate in detail but the cast is just ugly. Isn't there
> a better way to fix this?


I think, there is an another way to handle this issue. 'key_mgmt_suite' 
element in 'cfg80211_external_auth_params' struct should be converted to 
'__be32' type(like below code snippet) because wpa_s expects the value 
in big-endian format . After this change, the type case can be avoided. 
Though I am not sure if these changes can have impact on other driver.


diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index cc8a9880b9d6..92df70afe445 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -3509,7 +3509,7 @@ struct cfg80211_external_auth_params {
         enum nl80211_external_auth_action action;
         u8 bssid[ETH_ALEN] __aligned(2);
         struct cfg80211_ssid ssid;
-       unsigned int key_mgmt_suite;
+       __be32 key_mgmt_suite;
         u16 status;
         const u8 *pmkid;
  };


Regards,
Ajay





[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