Re: [PATCH] staging: rtl8723au: Fix sparse warnings

Larry Finger
2014-12-12T16:43:08Z

On 12/12/2014 06:52 AM, Dan Carpenter wrote:
> On Thu, Dec 11, 2014 at 05:53:30PM -0600, Larry Finger wrote:
>> On 12/11/2014 04:23 PM, Krzysztof Konopko wrote:
>>> Some struct fields in wifi.h are meant to be __le16 bu were declared as
>>> unsigned short. This was reported by sparse:
>>>
>>> rtw_wlan_util.c:538:24: warning: cast to restricted __le16
>>> rtw_wlan_util.c:1544:29: warning: cast to restricted __le16
>>> rtw_wlan_util.c:1546:25: warning: cast to restricted __le16
>>>
>>> This patch changes declared types of the struct fields involved.
>>>
>>> Signed-off-by: Krzysztof Konopko <kris@konagma.com>
>>> ---
>>> drivers/staging/rtl8723au/include/wifi.h | 6 +++---
>>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h
>>> index fd3da3b..8a2adc5 100644
>>> --- a/drivers/staging/rtl8723au/include/wifi.h
>>> +++ b/drivers/staging/rtl8723au/include/wifi.h
>>> @@ -28,7 +28,7 @@
>>> struct AC_param {
>>> unsigned char ACI_AIFSN;
>>> unsigned char CW;
>>> - unsigned short TXOP_limit;
>>> + __le16 TXOP_limit;
>>> } __packed;
>>>
>>> struct WMM_para_element {
>>> @@ -39,9 +39,9 @@ struct WMM_para_element {
>>>
>>> struct ADDBA_request {
>>> unsigned char dialog_token;
>>> - unsigned short BA_para_set;
>>> + __le16 BA_para_set;
>>> unsigned short BA_timeout_value;
>>> - unsigned short BA_starting_seqctrl;
>>> + __le16 BA_starting_seqctrl;
>>> } __packed;
>>
>> This fix may make the sparse warnings go away, but I think it
>> introduces new bugs.
>
> This kind of change, doesn't change the compiled code only how Sparse
> sees it. It can't introduce bugs.
>
> But it may well be that the calls to le16_to_cpu() should be removed. I
> looked at it a bit but I don't know.

Your point regarding bugs is taken. What I should have said is that blindly
making _le changes to hide Sparse messages may hide existing bugs for BE hardware.

Larry