Commit 666a0b5c authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Changpeng Liu
Browse files

iscsi: Assign not pointer but instance of spdk_cpuset in struct spdk_iscsi_portal_grp



This will reduce pontential malloc failures.

Change-Id: I9b1965e0be95af4c0496dfbae80c86b25c460c94
Signed-off-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/459718


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
parent 752fa1ca
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -229,7 +229,7 @@ spdk_iscsi_conn_construct(struct spdk_iscsi_portal *portal,
	conn->pg_tag = portal->group->tag;
	conn->portal_host = strdup(portal->host);
	conn->portal_port = strdup(portal->port);
	conn->portal_cpumask = portal->cpumask;
	conn->portal_cpumask = &portal->cpumask;
	conn->sock = sock;

	conn->state = ISCSI_CONN_STATE_INVALID;
@@ -1446,7 +1446,7 @@ spdk_iscsi_conn_schedule(struct spdk_iscsi_conn *conn)
		lcore = g_next_core;
		g_next_core = spdk_env_get_next_core(g_next_core);

		if (!spdk_cpuset_get_cpu(conn->portal->cpumask, lcore)) {
		if (!spdk_cpuset_get_cpu(&conn->portal->cpumask, lcore)) {
			continue;
		}

+5 −16
Original line number Diff line number Diff line
@@ -112,7 +112,6 @@ struct spdk_iscsi_portal *
spdk_iscsi_portal_create(const char *host, const char *port, const char *cpumask)
{
	struct spdk_iscsi_portal *p = NULL, *tmp;
	struct spdk_cpuset *core_mask = NULL;
	int rc;

	assert(host != NULL);
@@ -145,29 +144,21 @@ spdk_iscsi_portal_create(const char *host, const char *port, const char *cpumask

	memcpy(p->port, port, strlen(port));

	core_mask = spdk_cpuset_alloc();
	if (!core_mask) {
		SPDK_ERRLOG("spdk_cpuset_alloc() failed for host\n");
		goto error_out;
	}

	if (cpumask != NULL) {
		rc = spdk_app_parse_core_mask(cpumask, core_mask);
		rc = spdk_app_parse_core_mask(cpumask, &p->cpumask);
		if (rc < 0) {
			SPDK_ERRLOG("cpumask (%s) is invalid\n", cpumask);
			goto error_out;
		}
		if (spdk_cpuset_count(core_mask) == 0) {
		if (spdk_cpuset_count(&p->cpumask) == 0) {
			SPDK_ERRLOG("cpumask (%s) does not contain core mask (0x%s)\n",
				    cpumask, spdk_cpuset_fmt(spdk_app_get_core_mask()));
			goto error_out;
		}
	} else {
		spdk_cpuset_copy(core_mask, spdk_app_get_core_mask());
		spdk_cpuset_copy(&p->cpumask, spdk_app_get_core_mask());
	}

	p->cpumask = core_mask;

	p->sock = NULL;
	p->group = NULL; /* set at a later time by caller */
	p->acceptor_poller = NULL;
@@ -186,7 +177,6 @@ spdk_iscsi_portal_create(const char *host, const char *port, const char *cpumask
	return p;

error_out:
	spdk_cpuset_free(core_mask);
	free(p);

	return NULL;
@@ -203,7 +193,6 @@ spdk_iscsi_portal_destroy(struct spdk_iscsi_portal *p)
	TAILQ_REMOVE(&g_spdk_iscsi.portal_head, p, g_tailq);
	pthread_mutex_unlock(&g_spdk_iscsi.mutex);

	spdk_cpuset_free(p->cpumask);
	free(p);

}
@@ -677,7 +666,7 @@ spdk_iscsi_portal_grps_config_text(FILE *fp)
		TAILQ_FOREACH(p, &pg->head, per_pg_tailq) {
			if (NULL == p) { continue; }
			fprintf(fp, PORTAL_TMPL, p->host, p->port,
				spdk_cpuset_fmt(p->cpumask));
				spdk_cpuset_fmt(&p->cpumask));
		}
	}
}
@@ -699,7 +688,7 @@ iscsi_portal_grp_info_json(struct spdk_iscsi_portal_grp *pg,
		spdk_json_write_named_string(w, "host", portal->host);
		spdk_json_write_named_string(w, "port", portal->port);
		spdk_json_write_named_string_fmt(w, "cpumask", "0x%s",
						 spdk_cpuset_fmt(portal->cpumask));
						 spdk_cpuset_fmt(&portal->cpumask));

		spdk_json_write_object_end(w);
	}
+1 −1
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ struct spdk_iscsi_portal {
	char				host[MAX_PORTAL_ADDR + 1];
	char				port[MAX_PORTAL_PORT + 1];
	struct spdk_sock		*sock;
	struct spdk_cpuset		*cpumask;
	struct spdk_cpuset		cpumask;
	struct spdk_poller		*acceptor_poller;
	TAILQ_ENTRY(spdk_iscsi_portal)	per_pg_tailq;
	TAILQ_ENTRY(spdk_iscsi_portal)	g_tailq;
+6 −6
Original line number Diff line number Diff line
@@ -192,7 +192,7 @@ parse_portal_ipv4_normal_case(void)
	SPDK_CU_ASSERT_FATAL(p != NULL);
	CU_ASSERT(strcmp(p->host, host_str) == 0);
	CU_ASSERT(strcmp(p->port, port_str) == 0);
	CU_ASSERT(spdk_cpuset_equal(p->cpumask, cpumask_val));
	CU_ASSERT(spdk_cpuset_equal(&p->cpumask, cpumask_val));

	spdk_iscsi_portal_destroy(p);
	CU_ASSERT(TAILQ_EMPTY(&g_spdk_iscsi.portal_head));
@@ -220,7 +220,7 @@ parse_portal_ipv6_normal_case(void)
	SPDK_CU_ASSERT_FATAL(p != NULL);
	CU_ASSERT(strcmp(p->host, host_str) == 0);
	CU_ASSERT(strcmp(p->port, port_str) == 0);
	CU_ASSERT(spdk_cpuset_equal(p->cpumask, cpumask_val));
	CU_ASSERT(spdk_cpuset_equal(&p->cpumask, cpumask_val));

	spdk_iscsi_portal_destroy(p);
	CU_ASSERT(TAILQ_EMPTY(&g_spdk_iscsi.portal_head));
@@ -245,7 +245,7 @@ parse_portal_ipv4_skip_cpumask_case(void)
	SPDK_CU_ASSERT_FATAL(p != NULL);
	CU_ASSERT(strcmp(p->host, host_str) == 0);
	CU_ASSERT(strcmp(p->port, port_str) == 0);
	CU_ASSERT(spdk_cpuset_equal(p->cpumask, cpumask_val));
	CU_ASSERT(spdk_cpuset_equal(&p->cpumask, cpumask_val));

	spdk_iscsi_portal_destroy(p);
	CU_ASSERT(TAILQ_EMPTY(&g_spdk_iscsi.portal_head));
@@ -268,7 +268,7 @@ parse_portal_ipv6_skip_cpumask_case(void)
	SPDK_CU_ASSERT_FATAL(p != NULL);
	CU_ASSERT(strcmp(p->host, host_str) == 0);
	CU_ASSERT(strcmp(p->port, port_str) == 0);
	CU_ASSERT(spdk_cpuset_equal(p->cpumask, cpumask_val));
	CU_ASSERT(spdk_cpuset_equal(&p->cpumask, cpumask_val));

	spdk_iscsi_portal_destroy(p);
	CU_ASSERT(TAILQ_EMPTY(&g_spdk_iscsi.portal_head));
@@ -291,7 +291,7 @@ parse_portal_ipv4_skip_port_and_cpumask_case(void)
	SPDK_CU_ASSERT_FATAL(p != NULL);
	CU_ASSERT(strcmp(p->host, host_str) == 0);
	CU_ASSERT(strcmp(p->port, port_str) == 0);
	CU_ASSERT(spdk_cpuset_equal(p->cpumask, cpumask_val));
	CU_ASSERT(spdk_cpuset_equal(&p->cpumask, cpumask_val));

	spdk_iscsi_portal_destroy(p);
	CU_ASSERT(TAILQ_EMPTY(&g_spdk_iscsi.portal_head));
@@ -314,7 +314,7 @@ parse_portal_ipv6_skip_port_and_cpumask_case(void)
	SPDK_CU_ASSERT_FATAL(p != NULL);
	CU_ASSERT(strcmp(p->host, host_str) == 0);
	CU_ASSERT(strcmp(p->port, port_str) == 0);
	CU_ASSERT(spdk_cpuset_equal(p->cpumask, cpumask_val));
	CU_ASSERT(spdk_cpuset_equal(&p->cpumask, cpumask_val));

	spdk_iscsi_portal_destroy(p);
	CU_ASSERT(TAILQ_EMPTY(&g_spdk_iscsi.portal_head));