Re: [PATCH] wifi: rtw88: use work to update rate to avoid RCU warning

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

 



On 5/8/23 03:54, Ping-Ke Shih wrote:
The ieee80211_ops::sta_rc_update must be atomic, because
ieee80211_chan_bw_change() holds rcu_read lock while calling
drv_sta_rc_update(), so create a work to do original things.

  Voluntary context switch within RCU read-side critical section!
  WARNING: CPU: 0 PID: 4621 at kernel/rcu/tree_plugin.h:318
  rcu_note_context_switch+0x571/0x5d0
  CPU: 0 PID: 4621 Comm: kworker/u16:2 Tainted: G        W  OE
  Workqueue: phy3 ieee80211_chswitch_work [mac80211]
  RIP: 0010:rcu_note_context_switch+0x571/0x5d0
  Call Trace:
   <TASK>
   __schedule+0xb0/0x1460
   ? __mod_timer+0x116/0x360
   schedule+0x5a/0xc0
   schedule_timeout+0x87/0x150
   ? trace_raw_output_tick_stop+0x60/0x60
   wait_for_completion_timeout+0x7b/0x140
   usb_start_wait_urb+0x82/0x160 [usbcore
   usb_control_msg+0xe3/0x140 [usbcore
   rtw_usb_read+0x88/0xe0 [rtw_usb
   rtw_usb_read8+0xf/0x10 [rtw_usb
   rtw_fw_send_h2c_command+0xa0/0x170 [rtw_core
   rtw_fw_send_ra_info+0xc9/0xf0 [rtw_core
   drv_sta_rc_update+0x7c/0x160 [mac80211
   ieee80211_chan_bw_change+0xfb/0x110 [mac80211
   ieee80211_change_chanctx+0x38/0x130 [mac80211
   ieee80211_vif_use_reserved_switch+0x34e/0x900 [mac80211
   ieee80211_link_use_reserved_context+0x88/0xe0 [mac80211
   ieee80211_chswitch_work+0x95/0x170 [mac80211
   process_one_work+0x201/0x410
   worker_thread+0x4a/0x3b0
   ? process_one_work+0x410/0x410
   kthread+0xe1/0x110
   ? kthread_complete_and_exit+0x20/0x20
   ret_from_fork+0x1f/0x30
   </TASK>

Cc: stable@xxxxxxxxxxxxxxx
Fixes: c1edc86472fc ("rtw88: add ieee80211:sta_rc_update ops")
Reported-by: Larry Finger <Larry.Finger@xxxxxxxxxxxx>
Link: https://lore.kernel.org/linux-wireless/f1e31e8e-f84e-3791-50fb-663a83c5c6e9@xxxxxxxxxxxx/T/#t
Signed-off-by: Ping-Ke Shih <pkshih@xxxxxxxxxxx>
---
  drivers/net/wireless/realtek/rtw88/mac80211.c |  2 +-
  drivers/net/wireless/realtek/rtw88/main.c     | 15 +++++++++++++++
  drivers/net/wireless/realtek/rtw88/main.h     |  3 +++
  3 files changed, 19 insertions(+), 1 deletion(-)

Tested-by: Larry Finger <Larry.Finger@xxxxxxxxxxxx>

Thanks,

Larry




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux