From patchwork Fri Jul 6 18:10:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jon Maloy X-Patchwork-Id: 940667 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=ericsson.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=ericsson.com header.i=@ericsson.com header.b="PBQVQ7ul"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 41MjTZ1HQXz9s4c for ; Sat, 7 Jul 2018 04:11:14 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933806AbeGFSLK (ORCPT ); Fri, 6 Jul 2018 14:11:10 -0400 Received: from sessmg22.ericsson.net ([193.180.251.58]:61765 "EHLO sessmg22.ericsson.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934125AbeGFSLD (ORCPT ); Fri, 6 Jul 2018 14:11:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; d=ericsson.com; s=mailgw201801; c=relaxed/simple; q=dns/txt; i=@ericsson.com; t=1530900660; h=From:Sender:Reply-To:Subject:Date:Message-ID:To:CC:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=s2wPyFkf6xCxmuDC6knXLef+5y9yX+xaWT/pHuP4X7Y=; b=PBQVQ7ulPXJ0rAI1AX+CY3NSm8LKQlgttU3dvhfe/MZKGGa4Pcc2mLSuP5tjHTDx SmaKxTB1rZ0OENqKiIvl0xM4fxIg9Kw15eQNBmkrAvhuoODOXz5Z1xROuVtJ04fX Xby+HdhfCHYCBKCj4LBfw8JHpLK778NYa96ao/W2y5c=; X-AuditID: c1b4fb3a-dcb6e9c0000079c1-0a-5b3fb0b4bcc2 Received: from ESESSMB501.ericsson.se (Unknown_Domain [153.88.183.119]) by sessmg22.ericsson.net (Symantec Mail Security) with SMTP id 69.BD.31169.4B0BF3B5; Fri, 6 Jul 2018 20:11:00 +0200 (CEST) Received: from ESESSMB502.ericsson.se (153.88.183.163) by ESESSMB501.ericsson.se (153.88.183.162) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1466.3; Fri, 6 Jul 2018 20:10:16 +0200 Received: from ESESSHC011.ericsson.se (153.88.183.51) by ESESSMB502.ericsson.se (153.88.183.163) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256) id 15.1.1466.3 via Frontend Transport; Fri, 6 Jul 2018 20:10:16 +0200 Received: from daly.lab.linux.ericsson.se (10.35.28.123) by ESESSHC011.ericsson.se (153.88.183.51) with Microsoft SMTP Server (TLS) id 14.3.382.0; Fri, 6 Jul 2018 20:10:15 +0200 From: Jon Maloy To: , CC: , , , , , , Subject: [net 4/4] tipc: make function tipc_net_finalize() thread safe Date: Fri, 6 Jul 2018 20:10:06 +0200 Message-ID: <1530900606-24429-5-git-send-email-jon.maloy@ericsson.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1530900606-24429-1-git-send-email-jon.maloy@ericsson.com> References: <1530900606-24429-1-git-send-email-jon.maloy@ericsson.com> MIME-Version: 1.0 X-Originating-IP: [10.35.28.123] X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrDLMWRmVeSWpSXmKPExsUyM2J7ue6WDfbRBk9WCVvcaOhhtphzvoXF YsXuSawWb1/NYrc4tkDMYsv5LIsr7WfZLR5fv87swOGxZeVNJo93V9g8di/4zOTxeZOcx/ot W5kCWKO4bFJSczLLUov07RK4MrpfPmUv6OaqWHvyGFMD4yqOLkZODgkBE4m/HYtYQGwhgaOM EpvfWHQxcgHZXxkl7h7tZ4NwOpgknsx8zAjhbGWUmDD9ORtIC5uAhsTLaR2MILaIgLHEq5Wd TCBFzAKPGSW+3F8FViQs4CYxtXsOE4jNIqAicej7IbA4L1B897o7TBB3yEmcP/6TGcTmFHCX WD9hLhPETW4SLe/b2SHqBSVOznwCdiuzgITEwRcvmCFqlCXmfpgGNUdB4sOsZWwTGIVmIWmZ haRlASPTKkbR4tTi4tx0IyO91KLM5OLi/Dy9vNSSTYzAODi45bfVDsaDzx0PMQpwMCrx8B5a Yx8txJpYVlyZe4hRgoNZSYRXqx4oxJuSWFmVWpQfX1Sak1p8iFGag0VJnNcpzSJKSCA9sSQ1 OzW1ILUIJsvEwSnVwGjtM9OLI6BZ5+G1+KqLTVlHskMvKnbfb1R+tuedyr+pvdGd2tzcf1Zd FwnY/6hx5uI5/L7LGD9vzpfc2Hjc+pD8w6YLZvI1e4PETZYeObyN137Pggf5fzb8CE9W8Tsj cL/TMeCvDA9Ho+PacF3paGe/xF6xSTqLolgOce/RtM1b9GjO4idyR5RYijMSDbWYi4oTAflr Y9Z/AgAA Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The setting of the node address is not thread safe, meaning that two discoverers may decide to set it simultanously, with a duplicate entry in the name table as result. We fix that with this commit. Fixes: 25b0b9c4e835 ("tipc: handle collisions of 32-bit node address hash values") Signed-off-by: Jon Maloy --- net/tipc/net.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/net/tipc/net.c b/net/tipc/net.c index 4fbaa04..a7f6964 100644 --- a/net/tipc/net.c +++ b/net/tipc/net.c @@ -121,12 +121,17 @@ int tipc_net_init(struct net *net, u8 *node_id, u32 addr) void tipc_net_finalize(struct net *net, u32 addr) { - tipc_set_node_addr(net, addr); - smp_mb(); - tipc_named_reinit(net); - tipc_sk_reinit(net); - tipc_nametbl_publish(net, TIPC_CFG_SRV, addr, addr, - TIPC_CLUSTER_SCOPE, 0, addr); + struct tipc_net *tn = tipc_net(net); + + spin_lock_bh(&tn->node_list_lock); + if (!tipc_own_addr(net)) { + tipc_set_node_addr(net, addr); + tipc_named_reinit(net); + tipc_sk_reinit(net); + tipc_nametbl_publish(net, TIPC_CFG_SRV, addr, addr, + TIPC_CLUSTER_SCOPE, 0, addr); + } + spin_unlock_bh(&tn->node_list_lock); } void tipc_net_stop(struct net *net)