> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-boun...@osuosl.org> On Behalf Of
> Ahmed Zaki
> Sent: Friday, May 23, 2025 1:56 PM
> To: intel-wired-...@lists.osuosl.org
> Cc: net...@vger.kernel.org; Zaki, Ahmed <ahmed.z...@intel.com>;
> Loktionov, Aleksandr <aleksandr.loktio...@intel.com>
> Subject: [Intel-wired-lan] [PATCH iwl-net] idpf: convert control queue mutex
> to a spinlock
> 
> With VIRTCHNL2_CAP_MACFILTER enabled, the following warning is
> generated on module load:
> 
> [  324.701677] BUG: sleeping function called from invalid context at
> kernel/locking/mutex.c:578 [  324.701684] in_atomic(): 1, irqs_disabled(): 0,
> non_block: 0, pid: 1582, name: NetworkManager [  324.701689]
> preempt_count: 201, expected: 0 [  324.701693] RCU nest depth: 0,
> expected: 0 [  324.701697] 2 locks held by NetworkManager/1582:
> [  324.701702]  #0: ffffffff9f7be770 (rtnl_mutex){....}-{3:3}, at:
> rtnl_newlink+0x791/0x21e0 [  324.701730]  #1: ff1100216c380368
> (_xmit_ETHER){....}-{2:2}, at: __dev_open+0x3f0/0x870 [  324.701749]
> Preemption disabled at:
> [  324.701752] [<ffffffff9cd23b9d>] __dev_open+0x3dd/0x870 [
> 324.701765] CPU: 30 UID: 0 PID: 1582 Comm: NetworkManager Not tainted
> 6.15.0-rc5+ #2 PREEMPT(voluntary) [  324.701771] Hardware name: Intel
> Corporation M50FCP2SBSTD/M50FCP2SBSTD, BIOS
> SE5C741.86B.01.01.0001.2211140926 11/14/2022 [  324.701774] Call
> Trace:
> [  324.701777]  <TASK>
> [  324.701779]  dump_stack_lvl+0x5d/0x80 [  324.701788]  ?
> __dev_open+0x3dd/0x870 [  324.701793]
> __might_resched.cold+0x1ef/0x23d <..> [  324.701818]
> __mutex_lock+0x113/0x1b80 <..> [  324.701917]
> idpf_ctlq_clean_sq+0xad/0x4b0 [idpf] [  324.701935]  ?
> kasan_save_track+0x14/0x30 [  324.701941]  idpf_mb_clean+0x143/0x380
> [idpf] <..> [  324.701991]  idpf_send_mb_msg+0x111/0x720 [idpf] [
> 324.702009]  idpf_vc_xn_exec+0x4cc/0x990 [idpf] [  324.702021]  ?
> rcu_is_watching+0x12/0xc0 [  324.702035]
> idpf_add_del_mac_filters+0x3ed/0xb50 [idpf] <..> [  324.702122]
> __hw_addr_sync_dev+0x1cf/0x300 [  324.702126]  ?
> find_held_lock+0x32/0x90 [  324.702134]  idpf_set_rx_mode+0x317/0x390
> [idpf] [  324.702152]  __dev_open+0x3f8/0x870 [  324.702159]  ?
> __pfx___dev_open+0x10/0x10 [  324.702174]
> __dev_change_flags+0x443/0x650 <..> [  324.702208]
> netif_change_flags+0x80/0x160 [  324.702218]
> do_setlink.isra.0+0x16a0/0x3960 <..> [  324.702349]
> rtnl_newlink+0x12fd/0x21e0
> 
> The sequence is as follows:
>       rtnl_newlink()->
>       __dev_change_flags()->
>       __dev_open()->
>       dev_set_rx_mode() - >  # disables BH and grabs "dev->addr_list_lock"
>       idpf_set_rx_mode() ->  # proceed only if VIRTCHNL2_CAP_MACFILTER
> is ON
>       __dev_uc_sync() ->
>       idpf_add_mac_filter ->
>       idpf_add_del_mac_filters ->
>       idpf_send_mb_msg() ->
>       idpf_mb_clean() ->
>       idpf_ctlq_clean_sq()   # mutex_lock(cq_lock)
> 
> Fix by converting cq_lock to a spinlock. All operations under the new lock are
> safe except freeing the DMA memory, which may use vunmap(). Fix by
> requesting a contiguous physical memory for the DMA mapping.
> 
> Fixes: a251eee62133 ("idpf: add SRIOV support and other ndo_ops")
> Reviewed-by: Aleksandr Loktionov <aleksandr.loktio...@intel.com>
> Signed-off-by: Ahmed Zaki <ahmed.z...@intel.com>
> ---
> 2.43.0

Tested-by: Samuel Salin <samuel.sa...@intel.com>

Reply via email to