This is an automated email from the ASF dual-hosted git repository. xiaoxiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 59f05be52524dfd896136803d8ef2903da1f4a18 Author: zhaoxingyu1 <[email protected]> AuthorDate: Fri Jul 4 21:14:54 2025 +0800 mtd_config/nvs: keep offset increasing during ate traversal Enhance the robustness of ATE traversal. Signed-off-by: zhaoxingyu1 <[email protected]> --- drivers/mtd/mtd_config_nvs.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/mtd/mtd_config_nvs.c b/drivers/mtd/mtd_config_nvs.c index 2671560885d..5baa87ce858 100644 --- a/drivers/mtd/mtd_config_nvs.c +++ b/drivers/mtd/mtd_config_nvs.c @@ -717,7 +717,8 @@ static bool nvs_ate_valid(FAR struct nvs_fs *fs, FAR const struct nvs_ate *entry) { return nvs_ate_crc8_check(entry) && - entry->offset < (fs->blocksize - nvs_ate_size(fs)); + entry->offset < (fs->blocksize - nvs_ate_size(fs)) && + (entry->key_len > 0 || entry->id == nvs_special_ate_id(fs)); } /**************************************************************************** @@ -907,7 +908,8 @@ static int nvs_recover_last_ate(FAR struct nvs_fs *fs, return rc; } - if (nvs_ate_valid(fs, end_ate)) + if (nvs_ate_valid(fs, end_ate) && + end_ate->offset >= (data_end_addr & NVS_ADDR_OFFS_MASK)) { /* Found a valid ate, update data_end_addr and *addr */
