mwifiex: fix 'Smatch' warnings
authorYogesh Ashok Powar <yogeshp@marvell.com>
Tue, 8 Nov 2011 05:41:10 +0000 (21:41 -0800)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 11 Nov 2011 17:32:48 +0000 (12:32 -0500)
Following three warnings are fixed:

>init.c +256 mwifiex_init_adapter(71)
>warn: variable dereferenced before check 'adapter->sleep_cfm'
>(see line 191)

>sta_rx.c +193 mwifiex_process_sta_rx_packet(75)
>warn: variable dereferenced before check 'priv' (see line 182)

Signed-off-by: Yogesh Ashok Powar <yogeshp@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/mwifiex/init.c
drivers/net/wireless/mwifiex/sta_rx.c

index d792b3fb7c16ec407984288772eaa1e17a21c6b6..26940455255ba4637fdd31ec19a3407640f71e87 100644 (file)
@@ -187,8 +187,6 @@ static void mwifiex_init_adapter(struct mwifiex_adapter *adapter)
        struct mwifiex_opt_sleep_confirm *sleep_cfm_buf = NULL;
 
        skb_put(adapter->sleep_cfm, sizeof(struct mwifiex_opt_sleep_confirm));
-       sleep_cfm_buf = (struct mwifiex_opt_sleep_confirm *)
-                                               (adapter->sleep_cfm->data);
 
        adapter->cmd_sent = false;
 
@@ -254,6 +252,8 @@ static void mwifiex_init_adapter(struct mwifiex_adapter *adapter)
        mwifiex_wmm_init(adapter);
 
        if (adapter->sleep_cfm) {
+               sleep_cfm_buf = (struct mwifiex_opt_sleep_confirm *)
+                                               adapter->sleep_cfm->data;
                memset(sleep_cfm_buf, 0, adapter->sleep_cfm->len);
                sleep_cfm_buf->command =
                                cpu_to_le16(HostCmd_CMD_802_11_PS_MODE_ENH);
index 27430512f7cd038a91d42d4848609991f297a72f..5e1ef7e5da4f3f5b2679c47d012588e642be093f 100644 (file)
@@ -126,6 +126,9 @@ int mwifiex_process_sta_rx_packet(struct mwifiex_adapter *adapter,
        u16 rx_pkt_type;
        struct mwifiex_private *priv = adapter->priv[rx_info->bss_index];
 
+       if (!priv)
+               return -1;
+
        local_rx_pd = (struct rxpd *) (skb->data);
        rx_pkt_type = local_rx_pd->rx_pkt_type;
 
@@ -189,12 +192,11 @@ int mwifiex_process_sta_rx_packet(struct mwifiex_adapter *adapter,
                                             (u8) local_rx_pd->rx_pkt_type,
                                             skb);
 
-       if (ret || (rx_pkt_type == PKT_TYPE_BAR)) {
-               if (priv && (ret == -1))
-                       priv->stats.rx_dropped++;
-
+       if (ret || (rx_pkt_type == PKT_TYPE_BAR))
                dev_kfree_skb_any(skb);
-       }
+
+       if (ret)
+               priv->stats.rx_dropped++;
 
        return ret;
 }