From patchwork Mon Nov 6 20:40:59 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Francesco Ruggeri X-Patchwork-Id: 834921 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@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; dkim=pass (1024-bit key; unprotected) header.d=arista.com header.i=@arista.com header.b="en1kEcj0"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yW4G759RYz9s74 for ; Tue, 7 Nov 2017 07:41:03 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933131AbdKFUlB (ORCPT ); Mon, 6 Nov 2017 15:41:01 -0500 Received: from prod-mx.aristanetworks.com ([162.210.130.12]:63595 "EHLO prod-mx.aristanetworks.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932654AbdKFUlA (ORCPT ); Mon, 6 Nov 2017 15:41:00 -0500 Received: from prod-mx.aristanetworks.com (localhost [127.0.0.1]) by prod-mx.aristanetworks.com (Postfix) with ESMTP id D9F83B233; Mon, 6 Nov 2017 12:40:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arista.com; s=AristaCom; t=1510000859; bh=rtZXNzFSK8hbTShfHktTbRaxE9z2abb+25NhDWkjzqM=; h=Date:To:Subject:From; b=en1kEcj07CMCG1Vplsv4PyQhCevLV3G3HbTfkIvghFEKRf3Yo48X4FMX+5z91w2lh i8IlienyG6G7B9eHA1ETpq2pnBCKd9hf3dvORxPOzgfm/W1eCHnI+N6i+tVtFZQGoy EpzBads08LjfoPeTFe81UHVnZIb9m0819h7a47TA= Received: from fruggeri-Arora18_1.sjc.aristanetworks.com (unknown [10.95.5.227]) by prod-mx.aristanetworks.com (Postfix) with ESMTP id D51279C17; Mon, 6 Nov 2017 12:40:59 -0800 (PST) Received: by fruggeri-Arora18_1.sjc.aristanetworks.com (Postfix, from userid 10189) id AED8940382; Mon, 6 Nov 2017 12:40:59 -0800 (PST) Date: Mon, 06 Nov 2017 12:40:59 -0800 To: yoshfuji@linux-ipv6.org, kuznet@ms2.inr.ac.ru, davem@davemloft.net, fruggeri@arista.com, netdev@vger.kernel.org Subject: [PATCH] ipv6: try not to take rtnl_lock in ip6mr_sk_done User-Agent: Heirloom mailx 12.5 7/5/10 MIME-Version: 1.0 Message-Id: <20171106204059.AED8940382@fruggeri-Arora18_1.sjc.aristanetworks.com> From: fruggeri@arista.com (Francesco Ruggeri) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org commit 9634257773c30ce13d74fa4918329612c60d84a8 Author: Francesco Ruggeri Date: Mon Nov 6 11:01:59 2017 -0800 ipv6: try not to take rtnl_lock in ip6mr_sk_done mrt->mroute6_sk can only be set to a non-NULL value in ip6mr_sk_init() if sk->sk_type == SOCK_RAW && inet_sk(sk)->inet_num == IPPROTO_ICMPV6. Use that not to unnecessarily take the rtn_lock in ip6mr_sk_done() when it is invoked from rawv6_close(). Signed-off-by: Francesco Ruggeri diff --git a/net/ipv6/ip6mr.c b/net/ipv6/ip6mr.c index f5500f5..e1bb2d8 100644 --- a/net/ipv6/ip6mr.c +++ b/net/ipv6/ip6mr.c @@ -1617,6 +1617,10 @@ int ip6mr_sk_done(struct sock *sk) struct net *net = sock_net(sk); struct mr6_table *mrt; + if (sk->sk_type != SOCK_RAW || + inet_sk(sk)->inet_num != IPPROTO_ICMPV6) + return err; + rtnl_lock(); ip6mr_for_each_table(mrt, net) { if (sk == mrt->mroute6_sk) {