alloc_ordered_workqueue may fail and return NULL. Let's check
its return value to ensure it is not NULL so as to avoid
potential NULL pointer dereferences.

Signed-off-by: Kangjie Lu <k...@umn.edu>
---
 drivers/infiniband/hw/i40iw/i40iw_cm.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/infiniband/hw/i40iw/i40iw_cm.c 
b/drivers/infiniband/hw/i40iw/i40iw_cm.c
index 206cfb0016f8..ad9b4f235e30 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_cm.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_cm.c
@@ -3256,9 +3256,21 @@ void i40iw_setup_cm_core(struct i40iw_device *iwdev)
 
        cm_core->event_wq = alloc_ordered_workqueue("iwewq",
                                                    WQ_MEM_RECLAIM);
+       if (!cm_core->event_wq) {
+               i40iw_debug(cm_core->dev,
+                               I40IW_DEBUG_CM,
+                               "%s allocate event work queue failed\n",
+                               __func__);
+       }
 
        cm_core->disconn_wq = alloc_ordered_workqueue("iwdwq",
                                                      WQ_MEM_RECLAIM);
+       if (!cm_core->disconn_wq) {
+               i40iw_debug(cm_core->dev,
+                               I40IW_DEBUG_CM,
+                               "%s allocate disconnect work queue failed\n",
+                               __func__);
+       }
 }
 
 /**
-- 
2.17.1

Reply via email to