diff --git a/drivers/spi/spi_slave_driver.c b/drivers/spi/spi_slave_driver.c index ccc8f0dd3a3..56ec3007301 100644 --- a/drivers/spi/spi_slave_driver.c +++ b/drivers/spi/spi_slave_driver.c @@ -326,7 +326,7 @@ static ssize_t spi_slave_read(FAR struct file *filep, FAR char *buffer, return ret; } - do + while (priv->rx_length == 0) { remaining_words = SPIS_CTRLR_QPOLL(priv->ctrlr); if (remaining_words == 0) @@ -360,11 +360,11 @@ static ssize_t spi_slave_read(FAR struct file *filep, FAR char *buffer, } } } - while (priv->rx_length == 0); read_bytes = MIN(buflen, priv->rx_length); memcpy(buffer, priv->rx_buffer, read_bytes); + priv->rx_length -= read_bytes; nxmutex_unlock(&priv->lock); return (ssize_t)read_bytes;