Hi,
I have found a bug in the fds module (Flash Data Storage), which lead to losing "installed pages". If it was a swap page, fds module will be bricked.
Tested on SDK 14.2.0, but it is present in 15.2.0. Hardware is not relevant, but I tested it with PCA10040 (nRF52832).
Pages used by fds are taged with 2 magic words. Please see code below:
The problem occures, when this process is interrupted (with reset). It may result in writing only first word:
After reset, fds is checking this magic tag to determine page type. It uses these functions:
This fuction will classify this page as FDS_PAGE_UNDEFINED and unerased.
I would like to propose a change in page_is_erased() function.
Thanks to that, module will correctly classify this page as FDS_PAGE_ERASED.