Fix spa config generate memory leak in spa_load_best function

When spa retry load succeeds and spa recovery is requested it may
leak in spa_load_best function.  Always free the generated config
when it is not assigned to the spa.

Signed-off-by: cao.xuewen <cao.xuewen@zte.com.cn>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #4940
This commit is contained in:
heary-cao 2016-08-06 15:08:51 +08:00 committed by Brian Behlendorf
parent 5a5170884a
commit ee6370a7a4

View File

@ -3095,6 +3095,8 @@ spa_load_best(spa_t *spa, spa_load_state_t state, int mosconfig,
if (config && (rewind_error || state != SPA_LOAD_RECOVER)) if (config && (rewind_error || state != SPA_LOAD_RECOVER))
spa_config_set(spa, config); spa_config_set(spa, config);
else
nvlist_free(config);
if (state == SPA_LOAD_RECOVER) { if (state == SPA_LOAD_RECOVER) {
ASSERT3P(loadinfo, ==, NULL); ASSERT3P(loadinfo, ==, NULL);