FDS - data corruption


I found a bug in fds module (Flash Data Storage) which lead to data system corruption.


  • Given the device started GC(Garbage Collection) procedure

  • When the device will reset during the in the certain moment of page swap procedure.

  • Then assigning new record id will overlap existing ones.

When just first two words of a record are copied to the swap page, the header of this record will pass header_check function.

During the page_scan procedure, this corrupted header will be used to update m_latest_rec_id. It will result in assigning new record ids from 0.


I have updated header_check function to check record_id against 0xFFFFFFFF value, and now I am testing this workaround.