Masatake YAMATO wrote:
Hi,(I submitted to this patch to cluster-devel. However, none has interest to my post. So I'll submit it here again.) It seems that `sock' allocated by sock_create_kern in tcp_connect_to_sock() of dlm/fs/lowcomms.c is not released if dlm_nodeid_to_addr an error. static void tcp_connect_to_sock(struct connection *con) { ... result = sock_create_kern(dlm_local_addr[0]->ss_family, SOCK_STREAM, IPPROTO_TCP, &sock); if (result < 0) goto out_err; memset(&saddr, 0, sizeof(saddr)); if (dlm_nodeid_to_addr(con->nodeid, &saddr)) { sock_release(sock); goto out_err; } ... out_err: if (con->sock) { sock_release(con->sock); con->sock = NULL; } Signed-off-by: Masatake YAMATO <[EMAIL PROTECTED]> diff --git a/fs/dlm/lowcomms.c b/fs/dlm/lowcomms.c index 637018c..3962262 100644 --- a/fs/dlm/lowcomms.c +++ b/fs/dlm/lowcomms.c @@ -891,8 +891,10 @@ static void tcp_connect_to_sock(struct connection *con) goto out_err;memset(&saddr, 0, sizeof(saddr));- if (dlm_nodeid_to_addr(con->nodeid, &saddr)) + if (dlm_nodeid_to_addr(con->nodeid, &saddr)) { + sock_release(sock); goto out_err; + }sock->sk->sk_user_data = con;con->rx_action = receive_from_sock;
That looks good to me. Thanks. Can you commit this please Dave? -- Chrissie -- Linux-cluster mailing list [email protected] https://www.redhat.com/mailman/listinfo/linux-cluster
