redpine: locking bug after system resume
after resuming from suspend I often see
[ 846.920253] INFO: task kworker/u8:19:1715 blocked for more than 120 seconds.
[ 846.927351] Tainted: G C 5.15.3-librem5-00348-g1c083b116187 #680
[ 846.935224] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 846.943084] task:kworker/u8:19 state:D stack: 0 pid: 1715 ppid: 2 flags:0x00000008
[ 846.943105] Workqueue: phy0 ieee80211_iface_work [mac80211]
[ 846.943384] Call trace:
[ 846.943388] __switch_to+0x138/0x190
[ 846.943406] __schedule+0x288/0x6ec
[ 846.943420] schedule+0x7c/0x110
[ 846.943435] schedule_preempt_disabled+0x30/0x4c
[ 846.943450] __mutex_lock.constprop.0+0x194/0x570
[ 846.943463] __mutex_lock_slowpath+0x1c/0x30
[ 846.943474] mutex_lock+0x54/0x60
[ 846.943483] rsi_mac80211_ampdu_action+0x84/0x31c [redpine_91x]
[ 846.943531] drv_ampdu_action+0x6c/0x270 [mac80211]
[ 846.943729] ___ieee80211_start_rx_ba_session+0x3ec/0x630 [mac80211]
[ 846.943922] ieee80211_process_addba_request+0xf4/0x1a0 [mac80211]
[ 846.944140] ieee80211_iface_work+0x3ac/0x3dc [mac80211]
[ 846.944335] process_one_work+0x208/0x4bc
[ 846.944349] worker_thread+0x148/0x47c
[ 846.944359] kthread+0x15c/0x170
[ 846.944369] ret_from_fork+0x10/0x20
and my workaround is
--- a/drivers/net/wireless/redpine/rsi_91x_mac80211.c
+++ b/drivers/net/wireless/redpine/rsi_91x_mac80211.c
@@ -1768,8 +1768,6 @@ static int rsi_mac80211_ampdu_action(struct ieee80211_hw *hw,
break;
}
- mutex_lock(&common->mutex);
-
#if (((LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 69)) && \
(LINUX_VERSION_CODE < KERNEL_VERSION(4, 5, 0))) || \
(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)))
@@ -1869,7 +1867,6 @@ static int rsi_mac80211_ampdu_action(struct ieee80211_hw *hw,
break;
}
- mutex_unlock(&common->mutex);
return status;
}
fix it properly.