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

From: Larry Finger
Date: Fri Dec 12 2014 - 11:43:12 EST


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@xxxxxxxxxxx>
---
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


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/