Return-path: Received: from cdptpa-outbound-snat.email.rr.com ([107.14.166.225]:58940 "EHLO cdptpa-oedge-vip.email.rr.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751017Ab3KKELV (ORCPT ); Sun, 10 Nov 2013 23:11:21 -0500 Date: Sun, 10 Nov 2013 22:11:16 -0600 From: Larry Finger To: John W Linville Cc: mark.cave-ayland@ilande.co.uk, linux-wireless@vger.kernel.org Subject: [PATCH] rtlwifi: rtl8192cu: Fix more pointer arithmetic errors Message-ID: <528058e4.wXfuBjIOlsZGMefq%Larry.Finger@lwfinger.net> (sfid-20131111_051124_795691_CA387C7C) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: linux-wireless-owner@vger.kernel.org List-ID: This driver uses a number of macros to get and set various fields in the RX and TX descriptors. To work correctly, a u8 pointer to the descriptor must be used; however, in some cases a descriptor structure pointer is used instead. In addition, a duplicated statement is removed. Signed-off-by: Larry Finger Reported-by: Mark Cave-Ayland Cc: Stable Index: wireless-testing/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c =================================================================== --- wireless-testing.orig/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c +++ wireless-testing/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c @@ -742,7 +742,7 @@ static long _rtl92c_signal_scale_mapping static void _rtl92c_query_rxphystatus(struct ieee80211_hw *hw, struct rtl_stats *pstats, - struct rx_desc_92c *pdesc, + struct rx_desc_92c *p_desc, struct rx_fwinfo_92c *p_drvinfo, bool packet_match_bssid, bool packet_toself, @@ -757,11 +757,11 @@ static void _rtl92c_query_rxphystatus(st u32 rssi, total_rssi = 0; bool in_powersavemode = false; bool is_cck_rate; + u8 *pdesc = (u8 *)p_desc; - is_cck_rate = RX_HAL_IS_CCK_RATE(pdesc); + is_cck_rate = RX_HAL_IS_CCK_RATE(p_desc); pstats->packet_matchbssid = packet_match_bssid; pstats->packet_toself = packet_toself; - pstats->is_cck = is_cck_rate; pstats->packet_beacon = packet_beacon; pstats->is_cck = is_cck_rate; pstats->RX_SIGQ[0] = -1; Index: wireless-testing/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c =================================================================== --- wireless-testing.orig/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c +++ wireless-testing/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c @@ -303,10 +303,10 @@ out: bool rtl92cu_rx_query_desc(struct ieee80211_hw *hw, struct rtl_stats *stats, struct ieee80211_rx_status *rx_status, - u8 *p_desc, struct sk_buff *skb) + u8 *pdesc, struct sk_buff *skb) { struct rx_fwinfo_92c *p_drvinfo; - struct rx_desc_92c *pdesc = (struct rx_desc_92c *)p_desc; + struct rx_desc_92c *p_desc = (struct rx_desc_92c *)pdesc; u32 phystatus = GET_RX_DESC_PHY_STATUS(pdesc); stats->length = (u16) GET_RX_DESC_PKT_LEN(pdesc); @@ -345,7 +345,7 @@ bool rtl92cu_rx_query_desc(struct ieee80 if (phystatus) { p_drvinfo = (struct rx_fwinfo_92c *)(skb->data + stats->rx_bufshift); - rtl92c_translate_rx_signal_stuff(hw, skb, stats, pdesc, + rtl92c_translate_rx_signal_stuff(hw, skb, stats, p_desc, p_drvinfo); } /*rx_status->qual = stats->signal; */