Message ID | 20211110215744.5487-1-lukasz.bartosik@semihalf.com (mailing list archive) |
---|---|
State | Accepted |
Commit | f5cecf1d4c5ff76172928bc32e99ca56a5ca2f56 |
Delegated to: | Kalle Valo |
Headers | show |
Series | [v1] iwlwifi: fix warnings produced by kernel debug options | expand |
On Wed, 2021-11-10 at 22:57 +0100, Lukasz Bartosik wrote: > From: Łukasz Bartosik <lb@semihalf.com> > > Fix warnings produced by: > - lockdep_assert_wiphy() in function reg_process_self_managed_hint(), > - wiphy_dereference() in function iwl_mvm_init_fw_regd(). > Both function are expected to be called in critical section. > > The warnings were discovered when running v5.15 kernel > with debug options enabled: > > 1) > Hardware name: Google Delbin/Delbin > RIP: 0010:reg_process_self_managed_hint+0x254/0x347 [cfg80211] > ... > Call Trace: > regulatory_set_wiphy_regd_sync+0x3d/0xb0 > iwl_mvm_init_mcc+0x49d/0x5a2 > iwl_op_mode_mvm_start+0x1b58/0x2507 > ? iwl_mvm_reprobe_wk+0x94/0x94 > _iwl_op_mode_start+0x146/0x1a3 > iwl_opmode_register+0xda/0x13d > init_module+0x28/0x1000 > > 2) > drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c:263 suspicious rcu_dereference_protected() usage! > ... > Hardware name: Google Delbin/Delbin, BIOS Google_Delbin > Call Trace: > dump_stack_lvl+0xb1/0xe6 > iwl_mvm_init_fw_regd+0x2e7/0x379 > iwl_mvm_init_mcc+0x2c6/0x5a2 > iwl_op_mode_mvm_start+0x1b58/0x2507 > ? iwl_mvm_reprobe_wk+0x94/0x94 > _iwl_op_mode_start+0x146/0x1a3 > iwl_opmode_register+0xda/0x13d > init_module+0x28/0x100 > > Fixes: a05829a7222e ("cfg80211: avoid holding the RTNL when calling the driver") > Signed-off-by: Łukasz Bartosik <lb@semihalf.com> > --- > drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c > index 77ea2d0a3091..61dd75f9304d 100644 > --- a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c > +++ b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c > @@ -687,6 +687,7 @@ static int iwl_mvm_start_get_nvm(struct iwl_mvm *mvm) > int ret; > > rtnl_lock(); > + wiphy_lock(mvm->hw->wiphy); > mutex_lock(&mvm->mutex); > > ret = iwl_run_init_mvm_ucode(mvm); > @@ -702,6 +703,7 @@ static int iwl_mvm_start_get_nvm(struct iwl_mvm *mvm) > iwl_mvm_stop_device(mvm); > > mutex_unlock(&mvm->mutex); > + wiphy_unlock(mvm->hw->wiphy); > rtnl_unlock(); > > if (ret < 0) Thanks! This somehow got lost when rebasing stuff from our internal tree. Kalle, assigning to you. Can you please add a Cc: stable tag? -- Cheers, Luca.
Lukasz Bartosik <lb@semihalf.com> wrote: > From: Łukasz Bartosik <lb@semihalf.com> > > Fix warnings produced by: > - lockdep_assert_wiphy() in function reg_process_self_managed_hint(), > - wiphy_dereference() in function iwl_mvm_init_fw_regd(). > Both function are expected to be called in critical section. > > The warnings were discovered when running v5.15 kernel > with debug options enabled: > > 1) > Hardware name: Google Delbin/Delbin > RIP: 0010:reg_process_self_managed_hint+0x254/0x347 [cfg80211] > ... > Call Trace: > regulatory_set_wiphy_regd_sync+0x3d/0xb0 > iwl_mvm_init_mcc+0x49d/0x5a2 > iwl_op_mode_mvm_start+0x1b58/0x2507 > ? iwl_mvm_reprobe_wk+0x94/0x94 > _iwl_op_mode_start+0x146/0x1a3 > iwl_opmode_register+0xda/0x13d > init_module+0x28/0x1000 > > 2) > drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c:263 suspicious rcu_dereference_protected() usage! > ... > Hardware name: Google Delbin/Delbin, BIOS Google_Delbin > Call Trace: > dump_stack_lvl+0xb1/0xe6 > iwl_mvm_init_fw_regd+0x2e7/0x379 > iwl_mvm_init_mcc+0x2c6/0x5a2 > iwl_op_mode_mvm_start+0x1b58/0x2507 > ? iwl_mvm_reprobe_wk+0x94/0x94 > _iwl_op_mode_start+0x146/0x1a3 > iwl_opmode_register+0xda/0x13d > init_module+0x28/0x100 > > Fixes: a05829a7222e ("cfg80211: avoid holding the RTNL when calling the driver") > Signed-off-by: Łukasz Bartosik <lb@semihalf.com> Patch applied to wireless-drivers.git, thanks. f5cecf1d4c5f iwlwifi: fix warnings produced by kernel debug options
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c index 77ea2d0a3091..61dd75f9304d 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c @@ -687,6 +687,7 @@ static int iwl_mvm_start_get_nvm(struct iwl_mvm *mvm) int ret; rtnl_lock(); + wiphy_lock(mvm->hw->wiphy); mutex_lock(&mvm->mutex); ret = iwl_run_init_mvm_ucode(mvm); @@ -702,6 +703,7 @@ static int iwl_mvm_start_get_nvm(struct iwl_mvm *mvm) iwl_mvm_stop_device(mvm); mutex_unlock(&mvm->mutex); + wiphy_unlock(mvm->hw->wiphy); rtnl_unlock(); if (ret < 0)