[Cluster-devel] [DLM PATCH 3/6] DLM: Make consistent error path through tcp_create_listen_sock
Andreas Gruenbacher
agruenba at redhat.com
Thu Feb 11 16:52:00 UTC 2016
On Wed, Feb 10, 2016 at 7:55 PM, Bob Peterson <rpeterso at redhat.com> wrote:
> Function tcp_create_listen_sock has two error paths. One of them
> was setting con->sock to NULL. The other was not. This patch changes
> it to be consistent and do the same thing for both error paths.
>
> Signed-off-by: Bob Peterson <rpeterso at redhat.com>
> ---
> fs/dlm/lowcomms.c | 16 +++++++++-------
> 1 file changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/fs/dlm/lowcomms.c b/fs/dlm/lowcomms.c
> index e740326..3b780f0 100644
> --- a/fs/dlm/lowcomms.c
> +++ b/fs/dlm/lowcomms.c
> @@ -1199,10 +1199,7 @@ static struct socket *tcp_create_listen_sock(struct connection *con,
> result = sock->ops->bind(sock, (struct sockaddr *) saddr, addr_len);
> if (result < 0) {
> log_print("Can't bind to port %d", dlm_config.ci_tcp_port);
> - sock_release(sock);
> - sock = NULL;
> - con->sock = NULL;
> - goto create_out;
> + goto out_err;
> }
> result = kernel_setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE,
> (char *)&one, sizeof(one));
> @@ -1213,13 +1210,18 @@ static struct socket *tcp_create_listen_sock(struct connection *con,
> result = sock->ops->listen(sock, 5);
> if (result < 0) {
> log_print("Can't listen on port %d", dlm_config.ci_tcp_port);
> - sock_release(sock);
> - sock = NULL;
> - goto create_out;
> + goto out_err;
> }
>
> create_out:
> return sock;
> +
> +out_err:
> + sock_release(sock);
> + sock = NULL;
> + con->sock = NULL;
Consolidating the error paths makes sense, but con->sock shouldn't be
set here at all; the caller does that in add_sock().
Thanks,
Andreas
More information about the Cluster-devel
mailing list