From patchwork Thu Mar 22 22:57:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Ahern X-Patchwork-Id: 889723 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=pass (p=none dis=none) header.from=cumulusnetworks.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=cumulusnetworks.com header.i=@cumulusnetworks.com header.b="ZW142Ysj"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 406htK02W4z9s0x for ; Fri, 23 Mar 2018 09:58:49 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752006AbeCVW6q (ORCPT ); Thu, 22 Mar 2018 18:58:46 -0400 Received: from mail-pf0-f196.google.com ([209.85.192.196]:38181 "EHLO mail-pf0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751825AbeCVW6O (ORCPT ); Thu, 22 Mar 2018 18:58:14 -0400 Received: by mail-pf0-f196.google.com with SMTP id d26so3972464pfn.5 for ; Thu, 22 Mar 2018 15:58:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cumulusnetworks.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=rPu/fl7mbQvZCoxEAnEwfBnsjpJG+sd3pUSzUPrMffM=; b=ZW142Ysjzc6zqhrXdg6nj63Rjt8d2fAoAD2a5+3n9uHavmw8TH1/qH2tdLy4HAMaHv zHwMERhlG4Ibukuoknqy8FYVV5cmp/szTGfoU5KPnZbw60hqzySBWHqcScF0iVw+DvlH 1Rc+FWjBsSS3F3lN2ZFUtWde4eWf81bsHS+Sw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=rPu/fl7mbQvZCoxEAnEwfBnsjpJG+sd3pUSzUPrMffM=; b=oqDL71UhHZvYWYGR/OAHsWrxfJsXrRs021Iynp1+3y4pQJXhtVo6liJyNF1oSZLBdP sRq235q1/Xi8YFCartxjkG17wWSo9FcBzEBjHJz1sSWhfrxWImWB2kwVnr7J0Ca38Lb/ Vi2B5jCzu3GRH293gbtYM3KNMNQMvdRpreXFi/iYdX+JoGsHpY4SliGmJ6zQKeW3Gw2F SWELXnrRoudAqMFn3fVSIDPP/nx21uY2ZNmbAhWYtBxZsFGxFs+NdVN0/LRMZGWopx9c 8+qLj4trvD0fuc2O/AIRm8PWnOd8kNn7nNbyZUtwinvlv4OwaFCsimzi2sW5rLpz/XXN EO7Q== X-Gm-Message-State: AElRT7HJYx9mbdcBTzMtWD9gEhtWWfcPWJ7ZnpaMFnAlLe5G8K6ASJZf 1GJyA6SgemyI6L2pLC8jm/V45cHB X-Google-Smtp-Source: AG47ELu2lLoRLMg/FRhOMqOyiKjAbpwNCo9ZYIlLFtpxM9KPMPvht3VgSn6zoVBbNbmQfwQHNPBfCw== X-Received: by 10.98.42.71 with SMTP id q68mr21668644pfq.155.1521759493860; Thu, 22 Mar 2018 15:58:13 -0700 (PDT) Received: from kenny.it.cumulusnetworks.com. (fw.cumulusnetworks.com. [216.129.126.126]) by smtp.googlemail.com with ESMTPSA id b78sm15807767pfe.88.2018.03.22.15.58.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 22 Mar 2018 15:58:13 -0700 (PDT) From: David Ahern To: netdev@vger.kernel.org Cc: davem@davemloft.net, roopa@cumulusnetworks.com, shm@cumulusnetworks.com, jiri@mellanox.com, idosch@mellanox.com, jakub.kicinski@netronome.com, David Ahern Subject: [PATCH RFC net-next 2/7] net: Move call_fib_rule_notifiers up in fib_nl_newrule Date: Thu, 22 Mar 2018 15:57:52 -0700 Message-Id: <20180322225757.10377-3-dsa@cumulusnetworks.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180322225757.10377-1-dsa@cumulusnetworks.com> References: <20180322225757.10377-1-dsa@cumulusnetworks.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Move call_fib_rule_notifiers up in fib_nl_newrule to the point right before the rule is inserted into the list. At this point there are no more failure paths within the core rule code, so if the notifier does not fail then the rule will be inserted into the list. Signed-off-by: David Ahern --- net/core/fib_rules.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/net/core/fib_rules.c b/net/core/fib_rules.c index f6f04fc0f629..84c427a0c984 100644 --- a/net/core/fib_rules.c +++ b/net/core/fib_rules.c @@ -631,6 +631,11 @@ int fib_nl_newrule(struct sk_buff *skb, struct nlmsghdr *nlh, if (err < 0) goto errout_free; + err = call_fib_rule_notifiers(net, FIB_EVENT_RULE_ADD, rule, ops, + extack); + if (err < 0) + goto errout_free; + list_for_each_entry(r, &ops->rules_list, list) { if (r->pref > rule->pref) break; @@ -667,7 +672,6 @@ int fib_nl_newrule(struct sk_buff *skb, struct nlmsghdr *nlh, if (rule->tun_id) ip_tunnel_need_metadata(); - call_fib_rule_notifiers(net, FIB_EVENT_RULE_ADD, rule, ops, extack); notify_rule_change(RTM_NEWRULE, rule, ops, nlh, NETLINK_CB(skb).portid); flush_route_cache(ops); rules_ops_put(ops);