Messages in this thread |  | | Date | Sun, 3 Apr 2022 15:19:57 +0300 | Subject | Re: staging: r8188eu: how to handle nested mutex under spinlock | From | Pavel Skripkin <> |
| |
On 4/3/22 14:48, Pavel Skripkin wrote: > On 4/3/22 14:41, Michael Straube wrote: >> >> Hi Fabio, >> >> wait.. >> >> rtw_set_802_11_disassociate() calls rtw_pwr_wakeup() only if >> check_fwstate(pmlmepriv, _FW_LINKED) is true. >> >> >> if (check_fwstate(pmlmepriv, _FW_LINKED)) { >> rtw_disassoc_cmd(padapter, 0, true); >> rtw_indicate_disconnect(padapter); >> rtw_free_assoc_resources(padapter, 1); >> rtw_pwr_wakeup(padapter); >> } >> > > msleep() cannot be called in atomic context: > > drivers/staging/r8188eu/core/rtw_pwrctrl.c:379 > > if (pwrpriv->ps_processing) { > while (pwrpriv->ps_processing && rtw_get_passing_time_ms(start) <= 3000) > msleep(10); > } >
Hm, just wondering, shouldn't we annotate load from pwrpriv->ps_processing with READ_ONCE() inside while loop?
IIUC compiler might want to cache first load into register and we will stuck here forever.
Am I missing something?
With regards, Pavel Skripkin
|  |