diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2017-02-09 03:11:31 -0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-02-09 03:11:31 -0800 |
| commit | 87bd99f17946481ecd6687bbec676646febcf3c7 (patch) | |
| tree | 6e303253417fffc317b20a0f96c612e35a62020d | |
| parent | 74755245cdd1607a4f0a1261f570f4ea818416cb (diff) | |
| parent | 66c8f9ed278d4221be71a23b0f853c0ddd67679f (diff) | |
Merge "wil6210: protect list of pending wmi events during flush"
| -rw-r--r-- | drivers/net/wireless/ath/wil6210/wmi.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/wil6210/wmi.c b/drivers/net/wireless/ath/wil6210/wmi.c index 09595349f24b..0bddc9d9c632 100644 --- a/drivers/net/wireless/ath/wil6210/wmi.c +++ b/drivers/net/wireless/ath/wil6210/wmi.c @@ -1721,14 +1721,19 @@ int wmi_abort_scan(struct wil6210_priv *wil) void wmi_event_flush(struct wil6210_priv *wil) { + ulong flags; struct pending_wmi_event *evt, *t; wil_dbg_wmi(wil, "%s()\n", __func__); + spin_lock_irqsave(&wil->wmi_ev_lock, flags); + list_for_each_entry_safe(evt, t, &wil->pending_wmi_ev, list) { list_del(&evt->list); kfree(evt); } + + spin_unlock_irqrestore(&wil->wmi_ev_lock, flags); } static bool wmi_evt_call_handler(struct wil6210_priv *wil, int id, |
