From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1423712AbcFNDMP (ORCPT ); Mon, 13 Jun 2016 23:12:15 -0400 Received: from mail-it0-f68.google.com ([209.85.214.68]:33090 "EHLO mail-it0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1423460AbcFNDMN (ORCPT ); Mon, 13 Jun 2016 23:12:13 -0400 Message-ID: <1465873924.7945.180.camel@edumazet-glaptop3.roam.corp.google.com> Subject: Re: [PATCH 4/5] ipvs: Lock socket before setting SK_CAN_REUSE From: Eric Dumazet To: Quentin Armitage Cc: Wensong Zhang , Simon Horman , Julian Anastasov , Pablo Neira Ayuso , Patrick McHardy , Jozsef Kadlecsik , "David S. Miller" , netdev@vger.kernel.org, lvs-devel@vger.kernel.org, netfilter-devel@vger.kernel.org, coreteam@netfilter.org, linux-kernel@vger.kernel.org Date: Mon, 13 Jun 2016 20:12:04 -0700 In-Reply-To: <1465868613-26146-5-git-send-email-quentin@armitage.org.uk> References: <1465868613-26146-1-git-send-email-quentin@armitage.org.uk> <1465868613-26146-5-git-send-email-quentin@armitage.org.uk> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 2016-06-14 at 02:43 +0100, Quentin Armitage wrote: > When other settings are changed in the socket it is locked, so > lock the socket before setting SK_CAN_REUSE. > > Signed-off-by: Quentin Armitage > --- > net/netfilter/ipvs/ip_vs_sync.c | 2 ++ > 1 files changed, 2 insertions(+), 0 deletions(-) > > diff --git a/net/netfilter/ipvs/ip_vs_sync.c b/net/netfilter/ipvs/ip_vs_sync.c > index 29d73d8..dfac9ef 100644 > --- a/net/netfilter/ipvs/ip_vs_sync.c > +++ b/net/netfilter/ipvs/ip_vs_sync.c > @@ -1540,7 +1540,9 @@ static struct socket *make_receive_sock(struct netns_ipvs *ipvs, int id, int ifi > } > > /* it is equivalent to the REUSEADDR option in user-space */ > + lock_sock(sock->sk); > sock->sk->sk_reuse = SK_CAN_REUSE; > + release_sock(sock->sk); > result = sysctl_sync_sock_size(ipvs); > if (result > 0) > set_sock_size(sock->sk, 0, result); Have you tested this patch ?