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