Page MenuHomePhabricator

Secure storage and Internal trusted storage code logic check
Closed, ResolvedPublic

Description

 It seems there are code logic errors in both files sst_flash_fs_mblock.c and its_flash_fs_mblock.c.
 There are following codes in function  its_flash_fs_mblock_reset_metablock  in its_flash_fs_mblock.c:


 for (i = ITS_INIT_DBLOCK_START; i < ITS_NUM_DEDICATED_DBLOCKS; i++) {
     /* If a flash error is detected, the code erases the rest
      * of the blocks anyway to remove all data stored in them.
      */
     err |= its_flash_erase_block(i);
 }
This loop starts from ITS_INIT_DBLOCK_START and ends to ITS_NUM_DEDICATED_DBLOCKS.
  If there are four ITS blocks including meta blocks and data blocks in all, that means ITS_INIT_DBLOCK_START
  is 3 and ITS_NUM_DEDICATED_DBLOCKS is 1. But the above loop can not erase the data block any way.
  Should it be the following logic?

for (i = 0; i < ITS_NUM_DEDICATED_DBLOCKS; i++) {

    /* If a flash error is detected, the code erases the rest
     * of the blocks anyway to remove all data stored in them.
     */
    err |= its_flash_erase_block(i+ITS_INIT_DBLOCK_START);
}
 It is the same logic in function sst_flash_fs_mblock_reset_metablock  in  file sst_flash_fs_mblock.c.

Event Timeline

edison-ai closed this task as Resolved.Dec 17 2019, 1:53 AM

Patch had been merged to the master branch.