
Hi Wolfgang,
On 01/12/2015 08:27 AM, Stefan Roese wrote:
Hi Wolfgang,
On 12.01.2015 08:17, Wolfgang Denk wrote:
The new code is even simpler and copies the source data into the temp buffer and now uses the temp buffer to write the complete sector. So only one SPI sector write is used now instead of 2 in the old version.
...
if (len != flash->sector_size) {
/* Rewrite the original data to the end of the sector */
if (spi_flash_write(flash, offset + len,
flash->sector_size - len, &cmp_buf[len]))
return "write";
memcpy(cmp_buf, buf, len);
}ptr = cmp_buf;
Should we add a memset(buf, 0, sizeof(buf)) before the memcpy() to prevent information from earlier activities to leak?
"buf" points to the new data to be written into the flash. We're overwriting the first "len" bytes of "cmp_buf" with this data.
I don't see why we should erase anything there. Perhaps I'm missing something though.
That's right, and that's the whole point: cmp_buf points to the data read from the flash sector before erasing it, because that's what we want to keep (by re-writing it). The first part, however, we overwrite with the new data (buf). So there's nothing to erase.
Thanks, Gerlando