iwlwifi: mvm: check iwl_nvm_init return value

iwl_nvm_init() return value wasn't checked in some
path, which resulted in the following panic (if
there was some issue with the nvm):

Unable to handle kernel NULL pointer dereference at virtual address 00000004
pgd = d0460000
[00000004] *pgd=00000000
Internal error: Oops: 5 [#1] PREEMPT SMP
Modules linked in: iwlmvm(+) iwlwifi mac80211 cfg80211 compat [last unloaded: compat]
PC is at iwl_mvm_mac_setup_register+0x12c/0x460 [iwlmvm]
LR is at 0x2710
pc : [<bf50dd4c>]    lr : [<00002710>]    psr: 20800013
sp : d00cfe18  ip : 0000081e  fp : d006b908
r10: d0711408  r9 : bf532e64  r8 : d006b5bc
r7 : d01af000  r6 : bf39cefc  r5 : d006ab00  r4 : d006b5a4
r3 : 00000001  r2 : 00000000  r1 : d006a120  r0 : d006b860

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
This commit is contained in:
Eliad Peller 2013-12-09 13:15:02 +02:00 committed by Emmanuel Grumbach
parent 03b67e982c
commit 8c678ed466
1 changed files with 3 additions and 1 deletions

View File

@ -427,7 +427,9 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg,
* there is no need to unnecessarily power up the NIC at driver load * there is no need to unnecessarily power up the NIC at driver load
*/ */
if (iwlwifi_mod_params.nvm_file) { if (iwlwifi_mod_params.nvm_file) {
iwl_nvm_init(mvm); err = iwl_nvm_init(mvm);
if (err)
goto out_free;
} else { } else {
err = iwl_trans_start_hw(mvm->trans); err = iwl_trans_start_hw(mvm->trans);
if (err) if (err)