ecc3ea1de60297e5e9a432810897f9d45a4c11cb
[librecmc/librecmc.git] / target / linux / generic / pending-4.19 / 450-mtd-spi-nor-allow-NOR-driver-to-write-fewer-bytes-th.patch
1 From: Felix Fietkau <nbd@nbd.name>
2 Date: Thu, 22 Feb 2018 11:11:57 +0100
3 Subject: [PATCH] mtd: spi-nor: allow NOR driver to write fewer bytes than
4  requested
5
6 The write size can be constrained by the maximum message/transfer size
7 of the SPI controller. Only check for ret = 0 to avoid an infinite loop.
8
9 Signed-off-by: Felix Fietkau <nbd@nbd.name>
10 ---
11
12 --- a/drivers/mtd/spi-nor/spi-nor.c
13 +++ b/drivers/mtd/spi-nor/spi-nor.c
14 @@ -1455,7 +1455,7 @@ static int spi_nor_write(struct mtd_info
15  
16                 write_enable(nor);
17                 ret = nor->write(nor, addr, page_remain, buf + i);
18 -               if (ret < 0)
19 +               if (ret <= 0)
20                         goto write_err;
21                 written = ret;
22  
23 @@ -1464,13 +1464,6 @@ static int spi_nor_write(struct mtd_info
24                         goto write_err;
25                 *retlen += written;
26                 i += written;
27 -               if (written != page_remain) {
28 -                       dev_err(nor->dev,
29 -                               "While writing %zu bytes written %zd bytes\n",
30 -                               page_remain, written);
31 -                       ret = -EIO;
32 -                       goto write_err;
33 -               }
34         }
35  
36  write_err: