--- /dev/null
+--- a/fw_env.c
++++ b/fw_env.c
+@@ -605,7 +605,10 @@ static int flash_write_buf (int dev, int
+ erase_offset = offset & ~(blocklen - 1);
+
+ /* Maximum area we may use */
+- erase_len = top_of_range - erase_offset;
++ if (mtd_type == MTD_NANDFLASH)
++ erase_len = top_of_range - erase_offset;
++ else
++ erase_len = blocklen;
+
+ blockstart = erase_offset;
+ /* Offset inside a block */