wlcore: fix unsafe dereference of the wlvif
authorVictor Goldenshtein <victorg@ti.com>
Tue, 17 Sep 2013 15:41:25 +0000 (18:41 +0300)
committerLuciano Coelho <luciano.coelho@intel.com>
Mon, 30 Sep 2013 18:12:20 +0000 (21:12 +0300)
wlvif could be passed as NULL from the wlcore_tx_work_locked()
to the wl1271_prepare_tx_frame() and to wl1271_skb_queue_head()
functions. This may lead to a Kernel panic, fix this by
validating that wlvif != NULL.

Signed-off-by: Victor Goldenshtein <victorg@ti.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
drivers/net/wireless/ti/wlcore/tx.c

index 03249da9703a271a34a555468bddcb005fd90481..87cd707affa240390f6b34ea0d1b28caf23ffb83 100644 (file)
@@ -401,7 +401,7 @@ static int wl1271_prepare_tx_frame(struct wl1271 *wl, struct wl12xx_vif *wlvif,
                is_wep = (cipher == WLAN_CIPHER_SUITE_WEP40) ||
                         (cipher == WLAN_CIPHER_SUITE_WEP104);
 
-               if (WARN_ON(is_wep && wlvif->default_key != idx)) {
+               if (WARN_ON(is_wep && wlvif && wlvif->default_key != idx)) {
                        ret = wl1271_set_default_wep_key(wl, wlvif, idx);
                        if (ret < 0)
                                return ret;