From: Leon Romanovsky <leonro@mellanox.com>
Date: Tue, 29 May 2018 14:56:16 +0300
Subject: RDMA/cm: Abort loop in case of CM dequeue
Patch-mainline: v4.18-rc1
Git-commit: 2f5059a7af144426086555b62dd268d8060fe6d3
References: bsc#1103992 FATE#326009
In case CM work list is empty, the work pointer will be NULL,
so instead of kernel crash it is better to abort processing
of works.
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
---
drivers/infiniband/core/cm.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/drivers/infiniband/core/cm.c
+++ b/drivers/infiniband/core/cm.c
@@ -1707,7 +1707,9 @@ static void cm_process_work(struct cm_id
spin_lock_irq(&cm_id_priv->lock);
work = cm_dequeue_work(cm_id_priv);
spin_unlock_irq(&cm_id_priv->lock);
- BUG_ON(!work);
+ if (!work)
+ return;
+
ret = cm_id_priv->id.cm_handler(&cm_id_priv->id,
&work->cm_event);
cm_free_work(work);