ath10k: fix null deref if device crashes early
authorMichal Kazior <michal.kazior@tieto.com>
Thu, 17 Mar 2016 09:52:08 +0000 (10:52 +0100)
committerKalle Valo <kvalo@qca.qualcomm.com>
Mon, 21 Mar 2016 16:31:03 +0000 (18:31 +0200)
If device failed to init during early probing
(which is quite rare) it triggered driver to
compute crc before ar->firmware was ready causing
an oops.

Fixes: 3e58044b61a9 ("ath10k: print crc32 checksums for firmware and board files")
Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/debug.c

index 0f83464..2cf1b35 100644 (file)
@@ -127,6 +127,7 @@ EXPORT_SYMBOL(ath10k_info);
 void ath10k_debug_print_hwfw_info(struct ath10k *ar)
 {
        char fw_features[128] = {};
+       u32 crc = 0;
 
        ath10k_core_get_fw_features_str(ar, fw_features, sizeof(fw_features));
 
@@ -143,11 +144,14 @@ void ath10k_debug_print_hwfw_info(struct ath10k *ar)
                    config_enabled(CONFIG_ATH10K_DFS_CERTIFIED),
                    config_enabled(CONFIG_NL80211_TESTMODE));
 
+       if (ar->firmware)
+               crc = crc32_le(0, ar->firmware->data, ar->firmware->size);
+
        ath10k_info(ar, "firmware ver %s api %d features %s crc32 %08x\n",
                    ar->hw->wiphy->fw_version,
                    ar->fw_api,
                    fw_features,
-                   crc32_le(0, ar->firmware->data, ar->firmware->size));
+                   crc);
 }
 
 void ath10k_debug_print_board_info(struct ath10k *ar)