lkml.org 
[lkml]   [2014]   [Dec]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] staging: rtl8723au: Fix sparse warnings
    On 12/12/14 17:43, Larry Finger wrote:
    > 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
    >
    >

    Yes, I started it off blindly but dug further and now have a better
    understanding. Looking in ieee80211.h and getting your feedback helped
    me to get a better understanding of the situation.

    I see nothing wrong in declaring data that is supposed to be
    little-endian as __le. You say that making these changes blindly may
    hide existing bugs but:

    * not doing anything about it is not helpful either

    * this is no longer changing anything blindly
    Relevant structs: `addba_req` and `ieee80211_wmm_ac_param` do declare
    their fields as __le where needed.

    I do take a point though about making this change inconsistently
    (blindly) in my initial patch.

    Kris


    \
     
     \ /
      Last update: 2014-12-13 00:01    [W:2.401 / U:0.152 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site