Commit a19e945f authored by Andrey Vagin's avatar Andrey Vagin Committed by Pavel Emelyanov

restore: don't leak a transport socket

CID 73354 (#1 of 1): Resource leak (RESOURCE_LEAK)
9. leaked_handle: Handle variable sock going out of scope leaks the handle
Signed-off-by: 's avatarAndrey Vagin <avagin@openvz.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 80f9494d
...@@ -749,18 +749,21 @@ static int open_transport_fd(int pid, struct fdinfo_list_entry *fle) ...@@ -749,18 +749,21 @@ static int open_transport_fd(int pid, struct fdinfo_list_entry *fle)
ret = bind(sock, &saddr, sun_len); ret = bind(sock, &saddr, sun_len);
if (ret < 0) { if (ret < 0) {
pr_perror("Can't bind unix socket %s", saddr.sun_path + 1); pr_perror("Can't bind unix socket %s", saddr.sun_path + 1);
return -1; goto err;
} }
ret = reopen_fd_as(fle->fe->fd, sock); ret = reopen_fd_as(fle->fe->fd, sock);
if (ret < 0) if (ret < 0)
return -1; goto err;
pr_info("\t\tWake up fdinfo pid=%d fd=%d\n", fle->pid, fle->fe->fd); pr_info("\t\tWake up fdinfo pid=%d fd=%d\n", fle->pid, fle->fe->fd);
futex_set_and_wake(&fle->real_pid, getpid()); futex_set_and_wake(&fle->real_pid, getpid());
want_recv_stage(); want_recv_stage();
return 0; return 0;
err:
close(sock);
return -1;
} }
int send_fd_to_peer(int fd, struct fdinfo_list_entry *fle, int sock) int send_fd_to_peer(int fd, struct fdinfo_list_entry *fle, int sock)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment