[PATCH 3/3] fs: ext4fs: Perform NULL check before dereference

Andrew Goodbody andrew.goodbody at linaro.org
Fri Jul 4 14:32:44 CEST 2025


In the function put_ext4 there is a NULL check for fs->dev_desc but this
has already been derefenced twice before this happens. Refactor the code
a bit to put the NULL check first.

This issue found by Smatch.

Signed-off-by: Andrew Goodbody <andrew.goodbody at linaro.org>
---
 fs/ext4/ext4_common.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/fs/ext4/ext4_common.c b/fs/ext4/ext4_common.c
index cc150cf824f..8e6531fa3f0 100644
--- a/fs/ext4/ext4_common.c
+++ b/fs/ext4/ext4_common.c
@@ -198,16 +198,18 @@ void put_ext4(uint64_t off, const void *buf, uint32_t size)
 	uint64_t remainder;
 	unsigned char *temp_ptr = NULL;
 	struct ext_filesystem *fs = get_fs();
-	int log2blksz = fs->dev_desc->log2blksz;
+	int log2blksz;
+
+	if (!fs->dev_desc)
+		return;
+
 	ALLOC_CACHE_ALIGN_BUFFER(unsigned char, sec_buf, fs->dev_desc->blksz);
 
+	log2blksz = fs->dev_desc->log2blksz;
 	startblock = off >> log2blksz;
 	startblock += part_offset;
 	remainder = off & (uint64_t)(fs->dev_desc->blksz - 1);
 
-	if (fs->dev_desc == NULL)
-		return;
-
 	if ((startblock + (size >> log2blksz)) >
 	    (part_offset + fs->total_sect)) {
 		printf("part_offset is " LBAFU "\n", part_offset);

-- 
2.39.5



More information about the U-Boot mailing list