Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0a6d3879 authored by Axel Lin's avatar Axel Lin Committed by Mark Brown
Browse files

spi: Always check complete callback before calling it



Since commit 1e25cd47 "spi: Do not require a completion", this checking is
required to prevent NULL pointer dereference.

Signed-off-by: default avatarAxel Lin <axel.lin@ingics.com>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent 455c6fdb
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -446,6 +446,7 @@ static void fsl_espi_do_one_msg(struct spi_message *m)

	m->actual_length = espi_trans.actual_length;
	m->status = espi_trans.status;
	if (m->complete)
		m->complete(m->context);
}

+2 −1
Original line number Diff line number Diff line
@@ -404,6 +404,7 @@ static void fsl_spi_do_one_msg(struct spi_message *m)
	}

	m->status = status;
	if (m->complete)
		m->complete(m->context);

	if (status || !cs_change) {
+2 −1
Original line number Diff line number Diff line
@@ -301,6 +301,7 @@ static int mpc512x_psc_spi_msg_xfer(struct spi_master *master,
	}

	m->status = status;
	if (m->complete)
		m->complete(m->context);

	if (status || !cs_change)
+2 −1
Original line number Diff line number Diff line
@@ -248,6 +248,7 @@ static void mpc52xx_psc_spi_work(struct work_struct *work)
		}

		m->status = status;
		if (m->complete)
			m->complete(m->context);

		if (status || !cs_change)
+4 −2
Original line number Diff line number Diff line
@@ -235,6 +235,7 @@ static int mpc52xx_spi_fsmstate_transfer(int irq, struct mpc52xx_spi *ms,
		dev_err(&ms->master->dev, "mode fault\n");
		mpc52xx_spi_chipsel(ms, 0);
		ms->message->status = -EIO;
		if (ms->message->complete)
			ms->message->complete(ms->message->context);
		ms->state = mpc52xx_spi_fsmstate_idle;
		return FSM_CONTINUE;
@@ -289,6 +290,7 @@ mpc52xx_spi_fsmstate_wait(int irq, struct mpc52xx_spi *ms, u8 status, u8 data)
		ms->msg_count++;
		mpc52xx_spi_chipsel(ms, 0);
		ms->message->status = 0;
		if (ms->message->complete)
			ms->message->complete(ms->message->context);
		ms->state = mpc52xx_spi_fsmstate_idle;
		return FSM_CONTINUE;
Loading