diff mbox series

[u-boot-spi,v3,05/10] mtd: spi-flash: Check for zero length in legacy spi_flash_*()

Message ID 20211005135606.2246-6-kabel@kernel.org
State Accepted
Commit a67b3719f32673a9890700c72b980acbd2749e49
Delegated to: Jagannadha Sutradharudu Teki
Headers show
Series Fix `mtd erase` when used with mtdpart | expand

Commit Message

Marek Behún Oct. 5, 2021, 1:56 p.m. UTC
From: Marek Behún <marek.behun@nic.cz>

Check for zero length in the legacy spi_flash_read() /
spi_flash_write() / spi_flash_erase() functions.
On zero length, return 0 immediately, don't call the underlying method.

Rationale:
- these legacy functions call the _read(), _write() and _erase() methods
  of struct mtd
- the DM callers of these methods already check for zero length
- making all callers of these methods check for zero length makes it
  possible to remove the check from implementations of these _read(),
  _write() and _erase() methods

Signed-off-by: Marek Behún <marek.behun@nic.cz>
---
 include/spi_flash.h | 9 +++++++++
 1 file changed, 9 insertions(+)
diff mbox series

Patch

diff --git a/include/spi_flash.h b/include/spi_flash.h
index 3d747c925b..4d4ae89c19 100644
--- a/include/spi_flash.h
+++ b/include/spi_flash.h
@@ -165,6 +165,9 @@  static inline int spi_flash_read(struct spi_flash *flash, u32 offset,
 	struct mtd_info *mtd = &flash->mtd;
 	size_t retlen;
 
+	if (!len)
+		return 0;
+
 	return mtd->_read(mtd, offset, len, &retlen, buf);
 }
 
@@ -174,6 +177,9 @@  static inline int spi_flash_write(struct spi_flash *flash, u32 offset,
 	struct mtd_info *mtd = &flash->mtd;
 	size_t retlen;
 
+	if (!len)
+		return 0;
+
 	return mtd->_write(mtd, offset, len, &retlen, buf);
 }
 
@@ -188,6 +194,9 @@  static inline int spi_flash_erase(struct spi_flash *flash, u32 offset,
 		return -EINVAL;
 	}
 
+	if (!len)
+		return 0;
+
 	memset(&instr, 0, sizeof(instr));
 	instr.addr = offset;
 	instr.len = len;