diff options
author | John Baldwin <jhb@FreeBSD.org> | 2024-05-10 16:04:51 +0000 |
---|---|---|
committer | John Baldwin <jhb@FreeBSD.org> | 2024-05-10 16:13:21 +0000 |
commit | 0ac468c7b641a1db4ad1435cb7072919ab569c50 (patch) | |
tree | 20deaa4470999d6dfe741920754c102903f681a1 /sbin | |
parent | 1f029b86bbe11ba6e4bae2392920346817933df0 (diff) | |
download | src-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.c | 5 | ||||
-rw-r--r-- | sbin/nvmecontrol/reconnect.c | 5 |
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); |