Skip to content

Commit bfddbe8

Browse files
committed
nvme/tree: always set 'address' before nvme_reconfigure_ctrl()
The 'address' attribute is required in nvme_reconfigure_ctrl(), so we need to update it before calling the function and must not modify it in nvme_reconfigure_ctrl(). Signed-off-by: Hannes Reinecke <[email protected]>
1 parent 9679984 commit bfddbe8

1 file changed

Lines changed: 6 additions & 7 deletions

File tree

src/nvme/tree.c

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1323,7 +1323,6 @@ static void __nvme_deconfigure_ctrl(nvme_ctrl_t c)
13231323
FREE_CTRL_ATTR(c->queue_count);
13241324
FREE_CTRL_ATTR(c->serial);
13251325
FREE_CTRL_ATTR(c->sqsize);
1326-
FREE_CTRL_ATTR(c->address);
13271326
FREE_CTRL_ATTR(c->dctype);
13281327
FREE_CTRL_ATTR(c->cntrltype);
13291328
FREE_CTRL_ATTR(c->cntlid);
@@ -1333,6 +1332,7 @@ static void __nvme_deconfigure_ctrl(nvme_ctrl_t c)
13331332
void nvme_deconfigure_ctrl(nvme_ctrl_t c)
13341333
{
13351334
__nvme_deconfigure_ctrl(c);
1335+
FREE_CTRL_ATTR(c->address);
13361336
FREE_CTRL_ATTR(c->dhchap_key);
13371337
FREE_CTRL_ATTR(c->dhchap_ctrl_key);
13381338
FREE_CTRL_ATTR(c->keyring);
@@ -2102,16 +2102,17 @@ int nvme_init_ctrl(nvme_host_t h, nvme_ctrl_t c, int instance)
21022102
return ret;
21032103
}
21042104

2105-
ret = nvme_reconfigure_ctrl(h->r, c, path, name);
2106-
if (ret < 0)
2107-
return ret;
2108-
2105+
FREE_CTRL_ATTR(c->address);
21092106
c->address = nvme_get_attr(path, "address");
21102107
if (!c->address && strcmp(c->transport, "loop")) {
21112108
errno = ENVME_CONNECT_INVAL_TR;
21122109
return -1;
21132110
}
21142111

2112+
ret = nvme_reconfigure_ctrl(h->r, c, path, name);
2113+
if (ret < 0)
2114+
return ret;
2115+
21152116
subsys_name = nvme_ctrl_lookup_subsystem_name(h->r, name);
21162117
if (!subsys_name) {
21172118
nvme_msg(h->r, LOG_ERR,
@@ -2221,8 +2222,6 @@ static nvme_ctrl_t nvme_ctrl_alloc(nvme_root_t r, nvme_subsystem_t s,
22212222
errno = ENODEV;
22222223
return NULL;
22232224
}
2224-
FREE_CTRL_ATTR(c->address);
2225-
c->address = xstrdup(addr);
22262225
if (s->subsystype && !strcmp(s->subsystype, "discovery"))
22272226
c->discovery_ctrl = true;
22282227
ret = nvme_reconfigure_ctrl(r, c, path, name);

0 commit comments

Comments
 (0)