aboutsummaryrefslogtreecommitdiff
path: root/sbin
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2024-05-10 16:04:51 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2024-05-10 16:13:21 +0000
commit0ac468c7b641a1db4ad1435cb7072919ab569c50 (patch)
tree20deaa4470999d6dfe741920754c102903f681a1 /sbin
parent1f029b86bbe11ba6e4bae2392920346817933df0 (diff)
downloadsrc-0ac468c7b641a1db4ad1435cb7072919ab569c50.tar.gz
src-0ac468c7b641a1db4ad1435cb7072919ab569c50.zip
nvmecontrol: Free array of I/O queue pairs on failure to handoff
This is harmless but cleaner. Reported by: Coverity Scan CID: 1545041,1545049 Sponsored by: Chelsio Communications
Diffstat (limited to 'sbin')
-rw-r--r--sbin/nvmecontrol/connect.c5
-rw-r--r--sbin/nvmecontrol/reconnect.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/sbin/nvmecontrol/connect.c b/sbin/nvmecontrol/connect.c
index afb78725a3c7..14bd0cce1f8f 100644
--- a/sbin/nvmecontrol/connect.c
+++ b/sbin/nvmecontrol/connect.c
@@ -84,12 +84,15 @@ connect_nvm_controller(enum nvmf_trtype trtype, int adrfam, const char *address,
error = connect_nvm_queues(&aparams, trtype, adrfam, address, port,
cntlid, subnqn, opt.hostnqn, opt.kato, &admin, io,
opt.num_io_queues, opt.queue_size, &cdata);
- if (error != 0)
+ if (error != 0) {
+ free(io);
return (error);
+ }
error = nvmf_handoff_host(admin, opt.num_io_queues, io, &cdata);
if (error != 0) {
warnc(error, "Failed to handoff queues to kernel");
+ free(io);
return (EX_IOERR);
}
free(io);
diff --git a/sbin/nvmecontrol/reconnect.c b/sbin/nvmecontrol/reconnect.c
index c8a010c038d0..b606409eea90 100644
--- a/sbin/nvmecontrol/reconnect.c
+++ b/sbin/nvmecontrol/reconnect.c
@@ -85,12 +85,15 @@ reconnect_nvm_controller(int fd, enum nvmf_trtype trtype, int adrfam,
error = connect_nvm_queues(&aparams, trtype, adrfam, address, port,
rparams.cntlid, rparams.subnqn, opt.hostnqn, opt.kato, &admin, io,
opt.num_io_queues, opt.queue_size, &cdata);
- if (error != 0)
+ if (error != 0) {
+ free(io);
return (error);
+ }
error = nvmf_reconnect_host(fd, admin, opt.num_io_queues, io, &cdata);
if (error != 0) {
warnc(error, "Failed to handoff queues to kernel");
+ free(io);
return (EX_IOERR);
}
free(io);