Unverified Commit 8711a2ab authored by David Jander's avatar David Jander Committed by Mark Brown
Browse files

spi: __spi_pump_messages: Consolidate spin_unlocks to goto target

parent c1038165
Loading
Loading
Loading
Loading
+3 −8
Original line number Diff line number Diff line
@@ -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);
}