From 209935ce6c8a8ea1c79764aabbc4678da9ca53da Mon Sep 17 00:00:00 2001 From: Federico Vaga <federico.vaga@cern.ch> Date: Fri, 30 Aug 2019 11:27:01 +0200 Subject: [PATCH] sw:drv:spi: update message status on error Signed-off-by: Federico Vaga <federico.vaga@cern.ch> --- software/kernel/spi-ocores.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/software/kernel/spi-ocores.c b/software/kernel/spi-ocores.c index ac930fa..0cb8e55 100644 --- a/software/kernel/spi-ocores.c +++ b/software/kernel/spi-ocores.c @@ -467,18 +467,23 @@ static int spi_ocores_sw_xfer_next_init(struct spi_ocores *sp) sp->cur_xfer = list_next_entry(sp->cur_xfer, transfer_list); } - if (WARN(!sp->cur_xfer, "Invalid SPI transfer")) - return -EINVAL; + if (WARN(!sp->cur_xfer, "Invalid SPI transfer")) { + sp->master->cur_msg->status = -EINVAL; + return sp->master->cur_msg->status; + } nbits = spi_ocores_hw_xfer_bits_per_word(sp); - if ((nbits - 1) & (~SPI_OCORES_CTRL_CHAR_LEN)) - return -EINVAL; + if ((nbits - 1) & (~SPI_OCORES_CTRL_CHAR_LEN)) { + sp->master->cur_msg->status = -EINVAL; + return sp->master->cur_msg->status; + } if ((sp->cur_xfer->len << 3) < nbits) { dev_err(&sp->master->dev, "Invalid transfer length %d (bits_per_word %d)\n", sp->cur_xfer->len, nbits); - return -EINVAL; + sp->master->cur_msg->status = -EINVAL; + return sp->master->cur_msg->status; } ctrl = sp->ctrl_base; -- GitLab