]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
RDMA/iwcm: Simplify cm_work_handler()
authorBart Van Assche <bvanassche@acm.org>
Wed, 5 Jun 2024 14:51:00 +0000 (08:51 -0600)
committerLeon Romanovsky <leon@kernel.org>
Sun, 9 Jun 2024 08:15:27 +0000 (11:15 +0300)
Instead of complicating the code to avoid a spin_lock_irqsave() /
spin_lock_irqrestore() pair before returning, simplify the code by removing
the local variable 'empty'.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20240605145117.397751-5-bvanassche@acm.org
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/core/iwcm.c

index 3d66aec36899fa030f02803ffde6930f5f6d31d4..4424f430fc0870e0e9c4b0693f0339107deb7ac8 100644 (file)
@@ -1017,16 +1017,13 @@ static void cm_work_handler(struct work_struct *_work)
        struct iw_cm_event levent;
        struct iwcm_id_private *cm_id_priv = work->cm_id;
        unsigned long flags;
-       int empty;
        int ret = 0;
 
        spin_lock_irqsave(&cm_id_priv->lock, flags);
-       empty = list_empty(&cm_id_priv->work_list);
-       while (!empty) {
+       while (!list_empty(&cm_id_priv->work_list)) {
                work = list_first_entry(&cm_id_priv->work_list,
                                        struct iwcm_work, list);
                list_del_init(&work->list);
-               empty = list_empty(&cm_id_priv->work_list);
                levent = work->event;
                put_work(work);
                spin_unlock_irqrestore(&cm_id_priv->lock, flags);
@@ -1039,8 +1036,6 @@ static void cm_work_handler(struct work_struct *_work)
                        pr_debug("dropping event %d\n", levent.event);
                if (iwcm_deref_id(cm_id_priv))
                        return;
-               if (empty)
-                       return;
                spin_lock_irqsave(&cm_id_priv->lock, flags);
        }
        spin_unlock_irqrestore(&cm_id_priv->lock, flags);