The _rtw_init_recv_priv() initializes precvpriv->signal_stat_timer and sets it's timeout interval to 1000 ms. But _rtw_free_recv_priv() doesn't cancel the timer and we need to explicitly call _cancel_timer_ex() after we call _rtw_free_recv_priv() to cancel the timer. Call _cancel_timer_ex() from inside _rtw_free_recv_priv() as every init function needs a matching free function. Signed-off-by: Vihas Makwana <makvihas@xxxxxxxxx> --- drivers/staging/r8188eu/core/rtw_recv.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/staging/r8188eu/core/rtw_recv.c b/drivers/staging/r8188eu/core/rtw_recv.c index d77d98351..61308eb39 100644 --- a/drivers/staging/r8188eu/core/rtw_recv.c +++ b/drivers/staging/r8188eu/core/rtw_recv.c @@ -103,6 +103,7 @@ void _rtw_free_recv_priv(struct recv_priv *precvpriv) vfree(precvpriv->pallocated_frame_buf); rtl8188eu_free_recv_priv(padapter); + _cancel_timer_ex(&precvpriv->signal_stat_timer); } struct recv_frame *_rtw_alloc_recvframe(struct __queue *pfree_recv_queue) -- 2.30.2