Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp1781564imm; Wed, 16 May 2018 03:01:55 -0700 (PDT) X-Google-Smtp-Source: AB8JxZosEqnTWaori2KJ8HKdbmlhB+sdWG0DI7QzhPzI6ww0HKZ0ID/ld0opNyzWU/g4MpsaNg/d X-Received: by 2002:a65:490a:: with SMTP id p10-v6mr162341pgs.213.1526464915924; Wed, 16 May 2018 03:01:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526464915; cv=none; d=google.com; s=arc-20160816; b=n17dYrcS6qeesXtxuyosjSgNAhMbnX0e7lf6HCIZ7Mw7CbyUlN/2MIbg87n7qOg/P9 ZKBgigSVFNMdGc8MXgVYCj/O3S5ZmdRrBAroIIZeS9OLfBpfCy9OUsAhv0nkSddy0LqA 1RnXp3fARxVZluxd+HzLUvSP3bE1Tc4p7ieR8gyFPD0QNJLzyXmS5bmy/Cqno8wOb43n 6XJVouE7U1MoHoVkE9erBWtbqLrtYda8YnqG2ffceQLKDpGgoZSFSPOk2K0xjS1uibCa 15cLtWDzJTj9GPuCgDSJ2jN53FIZI5fmxcc25I/+7Z3QbhzVCyRUcpNFzdMdy4rUsP5m PceQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature:arc-authentication-results; bh=EupjVv9ToqYB5KvmbdIglOUa6TDYs7rvvYtZVwlhQZI=; b=bnZPzeE7P2c3Iklr6w67iuMcQOFTcfyYRntVpjFY0L2fYyHt8DVwbN+mBtJ5poBVi1 6gPxw5x3RCk1e81KBheZj7iDQQUmFHOWzOimcg2agRMadiVFrd9/+X7TfY4CMlwMO8ay tu/ZujnN4LiUZsV3IdRCx9qN6jiaAEEFW1VCnISSt52vP6YhEKTnhY1pnaGLz3OPmosM WxdrZpQE4OKIo6TExLa1td6DD21QR1p85NrT+OguXwIaZxgU9C5mUPHi9T5lXfpUsSjc 9kF1B4jNkCPAGLRSygDeJtxhbeoRCZ4Q7MTw7ZeH9AFIO9neKhky9lDdU5VnZwvnPbau lJeA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@resnulli-us.20150623.gappssmtp.com header.s=20150623 header.b=fieLSU+S; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q7-v6si2107112pls.286.2018.05.16.03.01.34; Wed, 16 May 2018 03:01:55 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@resnulli-us.20150623.gappssmtp.com header.s=20150623 header.b=fieLSU+S; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753089AbeEPJ75 (ORCPT + 99 others); Wed, 16 May 2018 05:59:57 -0400 Received: from mail-wm0-f65.google.com ([74.125.82.65]:50860 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752910AbeEPJ7z (ORCPT ); Wed, 16 May 2018 05:59:55 -0400 Received: by mail-wm0-f65.google.com with SMTP id t11-v6so301340wmt.0 for ; Wed, 16 May 2018 02:59:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=resnulli-us.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=EupjVv9ToqYB5KvmbdIglOUa6TDYs7rvvYtZVwlhQZI=; b=fieLSU+SUuIu5RIqvH2+fQjy5AVz7e9mGoAQfDEnIhsTmEU/bJp3QoNgvOOXTM9CG9 zHc33M35OUwuhAXkvGWxx5RGdT4xWdubtQqEs9qPi9ihG2gY5HQoQU79s987OIC5sALU NG/CKU7OBCxnxViulloYmFwkLl9+gxXI4Esqpt2PUOzMm06OayeITz3aHOYZIqx9Dmn2 SnRu+Iv706P5FeV2+vb8kqsM0k94YatDIQtqpcELGWUd3XZDpn3wJD+XrTr3D+gxLpD2 gg3ThiuWea+ACROCdeY6PCAjsJlaoNSyuDOgXse4/WgNdtZ+DxGFme4s5rcbBBAVrFn+ I+lQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=EupjVv9ToqYB5KvmbdIglOUa6TDYs7rvvYtZVwlhQZI=; b=gyDblna6H3/td15UiZ3dDz+fBRzTCuEPhdAOgbStMz/AxaslvalXQVr/HhNDWtVR0m wd6Op3Yepl5IyccKisfg2mwQxSxV90r0ryiebNro+/khfaaLOeo2q6XGQ+s4bUUAtcyX D60Bvb130zC8uD0OwosuYnqRa4MOzHMmGg/+pM7D5Nahd8nbTIbOLhw2Y50VxiIsUKF1 vBSN46xUFNxU8UsVdDUQIpA3VOdBScTa9AJFqnFnx4qHZBANkEU4FlzHsPRykDxPdLTk 6eybou83f8x2BVxrnvaJhln1+7cLNfhibjB2iMaqcBym9cgT+Yi57W0o+7s9PeFfDu8K KmRw== X-Gm-Message-State: ALKqPwf+1xw+2hdN3MOlXT6JuU8cvA1LdSpzY96JfPk5tkjvzjHoeA2U DrHivYjXOLLvpsOC+w9HGk+qJA== X-Received: by 2002:a1c:36e9:: with SMTP id y102-v6mr100757wmh.152.1526464794202; Wed, 16 May 2018 02:59:54 -0700 (PDT) Received: from localhost (ip-94-113-127-8.net.upcbroadband.cz. [94.113.127.8]) by smtp.gmail.com with ESMTPSA id p17-v6sm2054425wmc.17.2018.05.16.02.59.53 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 16 May 2018 02:59:53 -0700 (PDT) Date: Wed, 16 May 2018 11:59:53 +0200 From: Jiri Pirko To: Vlad Buslov Cc: netdev@vger.kernel.org, davem@davemloft.net, jhs@mojatatu.com, xiyou.wangcong@gmail.com, pablo@netfilter.org, kadlec@blackhole.kfki.hu, fw@strlen.de, ast@kernel.org, daniel@iogearbox.net, edumazet@google.com, keescook@chromium.org, linux-kernel@vger.kernel.org, netfilter-devel@vger.kernel.org, coreteam@netfilter.org, kliteyn@mellanox.com Subject: Re: [PATCH 12/14] net: sched: retry action check-insert on concurrent modification Message-ID: <20180516095953.GI1972@nanopsycho> References: <1526308035-12484-1-git-send-email-vladbu@mellanox.com> <1526308035-12484-13-git-send-email-vladbu@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1526308035-12484-13-git-send-email-vladbu@mellanox.com> User-Agent: Mutt/1.9.2 (2017-12-15) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Mon, May 14, 2018 at 04:27:13PM CEST, vladbu@mellanox.com wrote: >Retry check-insert sequence in action init functions if action with same >index was inserted concurrently. > >Signed-off-by: Vlad Buslov >--- > net/sched/act_bpf.c | 8 +++++++- > net/sched/act_connmark.c | 8 +++++++- > net/sched/act_csum.c | 8 +++++++- > net/sched/act_gact.c | 8 +++++++- > net/sched/act_ife.c | 8 +++++++- > net/sched/act_ipt.c | 8 +++++++- > net/sched/act_mirred.c | 8 +++++++- > net/sched/act_nat.c | 8 +++++++- > net/sched/act_pedit.c | 8 +++++++- > net/sched/act_police.c | 9 ++++++++- > net/sched/act_sample.c | 8 +++++++- > net/sched/act_simple.c | 9 ++++++++- > net/sched/act_skbedit.c | 8 +++++++- > net/sched/act_skbmod.c | 8 +++++++- > net/sched/act_tunnel_key.c | 9 ++++++++- > net/sched/act_vlan.c | 9 ++++++++- > 16 files changed, 116 insertions(+), 16 deletions(-) > >diff --git a/net/sched/act_bpf.c b/net/sched/act_bpf.c >index 5554bf7..7e20fdc 100644 >--- a/net/sched/act_bpf.c >+++ b/net/sched/act_bpf.c >@@ -299,10 +299,16 @@ static int tcf_bpf_init(struct net *net, struct nlattr *nla, > > parm = nla_data(tb[TCA_ACT_BPF_PARMS]); > >+replay: > if (!tcf_idr_check(tn, parm->index, act, bind)) { > ret = tcf_idr_create(tn, parm->index, est, act, > &act_bpf_ops, bind, true); >- if (ret < 0) >+ /* Action with specified index was created concurrently. >+ * Check again. >+ */ >+ if (parm->index && ret == -ENOSPC) >+ goto replay; >+ else if (ret) Hmm, looks like you are doing the same/very similar thing in every act code. I think it would make sense to introduce a helper function for this purpose. [...]