summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath10k/debug.c
diff options
context:
space:
mode:
authorMichal Kazior <michal.kazior@tieto.com>2016-03-17 10:52:08 +0100
committerKalle Valo <kvalo@qca.qualcomm.com>2016-03-21 18:31:03 +0200
commit8866c727440d5b059637cb97927e383548099e8c (patch)
tree75aee152e29208f5395b8d9889824403ff54f5c2 /drivers/net/wireless/ath/ath10k/debug.c
parent750eeed89cf3c466df302e4707491b015531e26c (diff)
downloadlinux-8866c727440d5b059637cb97927e383548099e8c.tar.gz
linux-8866c727440d5b059637cb97927e383548099e8c.tar.bz2
linux-8866c727440d5b059637cb97927e383548099e8c.zip
ath10k: fix null deref if device crashes early
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>
Diffstat (limited to 'drivers/net/wireless/ath/ath10k/debug.c')
-rw-r--r--drivers/net/wireless/ath/ath10k/debug.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath10k/debug.c b/drivers/net/wireless/ath/ath10k/debug.c
index 0f834646e6a7..2cf1b350ac73 100644
--- a/drivers/net/wireless/ath/ath10k/debug.c
+++ b/drivers/net/wireless/ath/ath10k/debug.c
@@ -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)