Kinetis: properly pad flash section writes
authorTomas Vanek <vanekt@fbl.cz>
Fri, 2 Oct 2015 12:31:30 +0000 (14:31 +0200)
committerFreddie Chopin <freddie.chopin@gmail.com>
Thu, 5 Nov 2015 22:14:46 +0000 (22:14 +0000)
kinetis_write() with byte count not divisible by prog_section_chunk_bytes
computed wrong wc and therefore paded section chunk by some
random data instead of 0xff

Change-Id: Ic7c66d8a3ceacda9e611e98b9fbf943b8001774b
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/2994
Tested-by: jenkins
Reviewed-by: Thomas Schmid <thomas@rfranging.com>
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
src/flash/nor/kinetis.c

index 484bc479375e884af0ef14fe74adef3e71c4d194..73ba586a0fc1d6c7be0aa927b3c694092d2c7f73 100644 (file)
@@ -1054,7 +1054,7 @@ static int kinetis_write(struct flash_bank *bank, const uint8_t *buffer,
                                unsigned residual_bc = (count-i) % prog_section_chunk_bytes;
 
                                /* number of complete words to copy directly from buffer */
-                               wc = (count - i) / 4;
+                               wc = (count - i - residual_bc) / 4;
 
                                /* number of total sections to write, including residual */
                                section_count = DIV_ROUND_UP((count-i), prog_section_chunk_bytes);