From 2045ef188457a1bb7a3891d174d2354fde1d6874 Mon Sep 17 00:00:00 2001 From: Andrey Vagin Date: Wed, 15 Jul 2015 14:21:00 +0300 Subject: [PATCH] tcp: disable the repair mode only for sockets of a current process (v3) rst_tcp_repair_sockets is filled when all sockets are collected, but the repair mode should be disabled only for sockets which are restored in a current process. https://bugzilla.openvz.org/show_bug.cgi?id=3281 v2: add a comment v3: typo fix Fixes: 73e303c8e265 ('rst: Fix rst_tcp_sock memory management') Signed-off-by: Andrey Vagin Signed-off-by: Pavel Emelyanov --- sk-tcp.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sk-tcp.c b/sk-tcp.c index 2b8e27839..9f3bf0de2 100644 --- a/sk-tcp.c +++ b/sk-tcp.c @@ -665,6 +665,13 @@ int rst_tcp_socks_prep(void) list_for_each_entry(ii, &rst_tcp_repair_sockets, rlist) { struct rst_tcp_sock *rs; + /* + * rst_tcp_repair_sockets contains all sockets, so we need to + * select sockets which restored in a current porcess. + */ + if (ii->sk_fd == -1) + continue; + rs = rst_mem_alloc(sizeof(*rs), RM_PRIVATE); if (!rs) return -1;