Commit 0cf0ee28 authored by Darek Stojaczyk's avatar Darek Stojaczyk Committed by Jim Harris
Browse files

app: free config object on failed app start



Set g_spdk_app.config early in the app init function,
so that the subsequently called spdk_app_fini() will
free it. So far the dynamicaly allocated config object
would be just leaked.

Signed-off-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
Change-Id: I19ffc8bc80858d954166649f825e573f83b4bf53
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/470734


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
parent cb061b8e
Loading
Loading
Loading
Loading
+12 −13
Original line number Diff line number Diff line
@@ -612,18 +612,27 @@ spdk_app_start(struct spdk_app_opts *opts, spdk_msg_fn start_fn,

	config = spdk_app_setup_conf(opts->config_file);
	if (config == NULL) {
		goto app_start_setup_conf_err;
		return 1;
	}

	if (spdk_app_read_config_file_global_params(opts) < 0) {
		goto app_start_setup_conf_err;
		spdk_conf_free(config);
		return 1;
	}

	memset(&g_spdk_app, 0, sizeof(g_spdk_app));
	g_spdk_app.config = config;
	g_spdk_app.json_config_file = opts->json_config_file;
	g_spdk_app.rpc_addr = opts->rpc_addr;
	g_spdk_app.shm_id = opts->shm_id;
	g_spdk_app.shutdown_cb = opts->shutdown_cb;
	g_spdk_app.rc = 0;

	spdk_log_set_level(SPDK_APP_DEFAULT_LOG_LEVEL);
	spdk_log_set_backtrace_level(SPDK_APP_DEFAULT_BACKTRACE_LOG_LEVEL);

	if (spdk_app_setup_env(opts) < 0) {
		goto app_start_setup_conf_err;
		return 1;
	}

	spdk_log_open(opts->log);
@@ -672,14 +681,6 @@ spdk_app_start(struct spdk_app_opts *opts, spdk_msg_fn start_fn,
		goto app_start_trace_cleanup_err;
	}

	memset(&g_spdk_app, 0, sizeof(g_spdk_app));
	g_spdk_app.config = config;
	g_spdk_app.json_config_file = opts->json_config_file;
	g_spdk_app.rpc_addr = opts->rpc_addr;
	g_spdk_app.shm_id = opts->shm_id;
	g_spdk_app.shutdown_cb = opts->shutdown_cb;
	g_spdk_app.rc = 0;

	g_delay_subsystem_init = opts->delay_subsystem_init;
	g_start_fn = start_fn;
	g_start_arg = arg1;
@@ -696,8 +697,6 @@ app_start_trace_cleanup_err:

app_start_log_close_err:
	spdk_log_close();

app_start_setup_conf_err:
	return 1;
}