diff --git a/subsys/fs/ext2/ext2_diskops.c b/subsys/fs/ext2/ext2_diskops.c index 92fd298d64..7e6016a8ba 100644 --- a/subsys/fs/ext2/ext2_diskops.c +++ b/subsys/fs/ext2/ext2_diskops.c @@ -669,9 +669,11 @@ int64_t ext2_inode_remove_blocks(struct ext2_inode *inode, uint32_t first) max_lvl = get_level_offsets(inode->i_fs, first, offsets); - if (all_zero(offsets, max_lvl)) { - /* We remove also the first block because all blocks referenced from it will be - * deleted. + if (all_zero(&offsets[1], max_lvl)) { + /* The first block to remove is either: + * - one of the first 12 blocks in the indode + * - the first referenced block in the indirect block list; + * we remove also the indirect block */ start = offsets[0]; } else {