• Ahmad Masri's avatar
    wil6210: drop old event after wmi_call timeout · 12058bfa
    Ahmad Masri authored
    [ Upstream commit 1a276003 ]
    
    This change fixes a rare race condition of handling WMI events after
    wmi_call expires.
    
    wmi_recv_cmd immediately handles an event when reply_buf is defined and
    a wmi_call is waiting for the event.
    However, in case the wmi_call has already timed-out, there will be no
    waiting/running wmi_call and the event will be queued in WMI queue and
    will be handled later in wmi_event_handle.
    Meanwhile, a new similar wmi_call for the same command and event may
    be issued. In this case, when handling the queued event we got WARN_ON
    printed.
    
    Fixing this case as a valid timeout and drop the unexpected event.
    Signed-off-by: default avatarAhmad Masri <amasri@codeaurora.org>
    Signed-off-by: default avatarMaya Erez <merez@codeaurora.org>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    12058bfa
wmi.c 106 KB