lib/ftl: Fix findings of static code analysis
A metadata region without mirror should have the INVALID enum set, otherwise it risks touching invalid parts of the array. The sb_shm_md not being set to NULL could cause the code to touch this freed pointer in the error path in ftl_md_create -> ftl_md_create_shm -> ftl_md_invalidate_shm calls. Signed-off-by: Kozlowski Mateusz <mateusz.kozlowski@intel.com> Signed-off-by: Mariusz Barczak <mariusz.barczak@intel.com> Change-Id: I7fe9694dad535de5f6b2a4af27400fa125480605 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15258 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Mellanox Build Bot Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
646b851e75
commit
6a26cb6053
@ -528,7 +528,7 @@ ftl_layout_setup_superblock(struct spdk_ftl_dev *dev)
|
||||
|
||||
region = &layout->region[FTL_LAYOUT_REGION_TYPE_SB_BASE];
|
||||
region->type = FTL_LAYOUT_REGION_TYPE_SB_BASE;
|
||||
region->mirror_type = FTL_LAYOUT_REGION_TYPE_MAX;
|
||||
region->mirror_type = FTL_LAYOUT_REGION_TYPE_INVALID;
|
||||
region->name = "sb_mirror";
|
||||
region->current.version = FTL_SB_VERSION_CURRENT;
|
||||
region->prev.version = FTL_SB_VERSION_CURRENT;
|
||||
|
@ -606,6 +606,7 @@ shm_retry:
|
||||
if ((md_create_flags & FTL_MD_CREATE_SHM_NEW) == 0) {
|
||||
md_create_flags |= FTL_MD_CREATE_SHM_NEW;
|
||||
ftl_md_destroy(dev->sb_shm_md, 0);
|
||||
dev->sb_shm_md = NULL;
|
||||
goto shm_retry;
|
||||
}
|
||||
ftl_mngt_fail_step(mngt);
|
||||
|
Loading…
Reference in New Issue
Block a user