Search Linux Wireless

Re: [PATCH v1] iwlwifi: fix warnings produced by kernel debug options

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2021-11-10 at 22:57 +0100, Lukasz Bartosik wrote:
> From: Łukasz Bartosik <lb@xxxxxxxxxxxx>
> 
> 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@xxxxxxxxxxxx>
> ---
>  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.




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux