| From f6a707101f56439baf186140e585c1af77561ab3 Mon Sep 17 00:00:00 2001 |
| From: Kangjie Lu <kjlu@umn.edu> |
| Date: Tue, 12 Mar 2019 03:05:02 -0500 |
| Subject: net: cw1200: fix a NULL pointer dereference |
| |
| [ Upstream commit 0ed2a005347400500a39ea7c7318f1fea57fb3ca ] |
| |
| In case create_singlethread_workqueue fails, the fix free the |
| hardware and returns NULL to avoid NULL pointer dereference. |
| |
| Signed-off-by: Kangjie Lu <kjlu@umn.edu> |
| Signed-off-by: Kalle Valo <kvalo@codeaurora.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/wireless/st/cw1200/main.c | 5 +++++ |
| 1 file changed, 5 insertions(+) |
| |
| diff --git a/drivers/net/wireless/st/cw1200/main.c b/drivers/net/wireless/st/cw1200/main.c |
| index 90dc979f260b6..c1608f0bf6d01 100644 |
| --- a/drivers/net/wireless/st/cw1200/main.c |
| +++ b/drivers/net/wireless/st/cw1200/main.c |
| @@ -345,6 +345,11 @@ static struct ieee80211_hw *cw1200_init_common(const u8 *macaddr, |
| mutex_init(&priv->wsm_cmd_mux); |
| mutex_init(&priv->conf_mutex); |
| priv->workqueue = create_singlethread_workqueue("cw1200_wq"); |
| + if (!priv->workqueue) { |
| + ieee80211_free_hw(hw); |
| + return NULL; |
| + } |
| + |
| sema_init(&priv->scan.lock, 1); |
| INIT_WORK(&priv->scan.work, cw1200_scan_work); |
| INIT_DELAYED_WORK(&priv->scan.probe_work, cw1200_probe_work); |
| -- |
| 2.20.1 |
| |