spi: __spi_pump_messages: Consolidate spin_unlocks to goto target
authorDavid Jander <david@protonic.nl>
Tue, 21 Jun 2022 06:12:27 +0000 (08:12 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 27 Jun 2022 12:27:19 +0000 (13:27 +0100)
Signed-off-by: David Jander <david@protonic.nl>
Link: https://lore.kernel.org/r/20220621061234.3626638-5-david@protonic.nl
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi.c

index cfff2ff..fa2d091 100644 (file)
@@ -1650,10 +1650,8 @@ static void __spi_pump_messages(struct spi_controller *ctlr, bool in_kthread)
        spin_lock_irqsave(&ctlr->queue_lock, flags);
 
        /* Make sure we are not already running a message */
-       if (ctlr->cur_msg) {
-               spin_unlock_irqrestore(&ctlr->queue_lock, flags);
+       if (ctlr->cur_msg)
                goto out_unlock;
-       }
 
        /* If another context is idling the device then defer */
        if (ctlr->idling) {
@@ -1664,10 +1662,8 @@ static void __spi_pump_messages(struct spi_controller *ctlr, bool in_kthread)
 
        /* Check if the queue is idle */
        if (list_empty(&ctlr->queue) || !ctlr->running) {
-               if (!ctlr->busy) {
-                       spin_unlock_irqrestore(&ctlr->queue_lock, flags);
+               if (!ctlr->busy)
                        goto out_unlock;
-               }
 
                /* Defer any non-atomic teardown to the thread */
                if (!in_kthread) {
@@ -1681,7 +1677,6 @@ static void __spi_pump_messages(struct spi_controller *ctlr, bool in_kthread)
                                kthread_queue_work(ctlr->kworker,
                                                   &ctlr->pump_messages);
                        }
-                       spin_unlock_irqrestore(&ctlr->queue_lock, flags);
                        goto out_unlock;
                }
 
@@ -1703,7 +1698,6 @@ static void __spi_pump_messages(struct spi_controller *ctlr, bool in_kthread)
                spin_lock_irqsave(&ctlr->queue_lock, flags);
                ctlr->idling = false;
                ctlr->queue_empty = true;
-               spin_unlock_irqrestore(&ctlr->queue_lock, flags);
                goto out_unlock;
        }
 
@@ -1727,6 +1721,7 @@ static void __spi_pump_messages(struct spi_controller *ctlr, bool in_kthread)
        return;
 
 out_unlock:
+       spin_unlock_irqrestore(&ctlr->queue_lock, flags);
        mutex_unlock(&ctlr->io_mutex);
 }