]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
spi: airoha: fix airoha_snand_{write,read}_data data_len estimation
authorLorenzo Bianconi <lorenzo@kernel.org>
Fri, 13 Sep 2024 21:07:14 +0000 (23:07 +0200)
committerMark Brown <broonie@kernel.org>
Wed, 18 Sep 2024 13:10:33 +0000 (15:10 +0200)
Fix data length written and read in airoha_snand_write_data and
airoha_snand_read_data routines respectively if it is bigger than
SPI_MAX_TRANSFER_SIZE.

Fixes: a403997c1201 ("spi: airoha: add SPI-NAND Flash controller driver")
Tested-by: Christian Marangi <ansuelsmth@gmail.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://patch.msgid.link/20240913-airoha-spi-fixes-v1-2-de2e74ed4664@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-airoha-snfi.c

index be3e4ac42153e91b9cf47c0ed7128768d675a70b..c71be702cf6f6a17957c32d5f5a7f435f54a057e 100644 (file)
@@ -405,7 +405,7 @@ static int airoha_snand_write_data(struct airoha_snand_ctrl *as_ctrl, u8 cmd,
        for (i = 0; i < len; i += data_len) {
                int err;
 
-               data_len = min(len, SPI_MAX_TRANSFER_SIZE);
+               data_len = min(len - i, SPI_MAX_TRANSFER_SIZE);
                err = airoha_snand_set_fifo_op(as_ctrl, cmd, data_len);
                if (err)
                        return err;
@@ -427,7 +427,7 @@ static int airoha_snand_read_data(struct airoha_snand_ctrl *as_ctrl, u8 *data,
        for (i = 0; i < len; i += data_len) {
                int err;
 
-               data_len = min(len, SPI_MAX_TRANSFER_SIZE);
+               data_len = min(len - i, SPI_MAX_TRANSFER_SIZE);
                err = airoha_snand_set_fifo_op(as_ctrl, 0xc, data_len);
                if (err)
                        return err;