diff options
author | Christophe JAILLET <christophe.jaillet@wanadoo.fr> | 2023-10-30 15:49:28 +0100 |
---|---|---|
committer | Keith Busch <kbusch@kernel.org> | 2023-11-06 08:05:53 -0800 |
commit | 0e32fdd7968eb9a39aa4d4111aef0fda8684af9e (patch) | |
tree | e97aee3c68b7409e554db523e2b534c4cf4dac31 /drivers/nvme | |
parent | 744eac783f9e105358eed05b42dcc5c5789744b3 (diff) | |
download | linux-0e32fdd7968eb9a39aa4d4111aef0fda8684af9e.tar.gz |
nvme-tcp: Fix a memory leak
All error handling path end to the error handling path, except this one.
Go to the error handling branch as well here, otherwise 'icreq' and
'icresp' will leak.
Fixes: 2837966ab2a8 ("nvme-tcp: control message handling for recvmsg()")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Diffstat (limited to 'drivers/nvme')
-rw-r--r-- | drivers/nvme/host/tcp.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/nvme/host/tcp.c b/drivers/nvme/host/tcp.c index 4714a902f4caa..f97711fc9f9fd 100644 --- a/drivers/nvme/host/tcp.c +++ b/drivers/nvme/host/tcp.c @@ -1423,13 +1423,14 @@ static int nvme_tcp_init_connection(struct nvme_tcp_queue *queue) nvme_tcp_queue_id(queue), ret); goto free_icresp; } + ret = -ENOTCONN; if (queue->ctrl->ctrl.opts->tls) { ctype = tls_get_record_type(queue->sock->sk, (struct cmsghdr *)cbuf); if (ctype != TLS_RECORD_TYPE_DATA) { pr_err("queue %d: unhandled TLS record %d\n", nvme_tcp_queue_id(queue), ctype); - return -ENOTCONN; + goto free_icresp; } } ret = -EINVAL; |