diff --git a/fs/erofs/zmap.c b/fs/erofs/zmap.c
index abcded1acd1949414d1d73d595e792eacda8fcc3..4864863cd1298c145bfd646e3e0300001212e939 100644
--- a/fs/erofs/zmap.c
+++ b/fs/erofs/zmap.c
@@ -763,6 +763,8 @@ int z_erofs_map_blocks_iter(struct inode *inode, struct erofs_map_blocks *map,
 
 	err = z_erofs_do_map_blocks(inode, map, flags);
 out:
+	if (err)
+		map->m_llen = 0;
 	trace_z_erofs_map_blocks_iter_exit(inode, map, flags, err);
 
 	/* aggressively BUG_ON iff CONFIG_EROFS_FS_DEBUG is on */