Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp36877ybk; Tue, 19 May 2020 14:52:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy4RZLolvnlpVcDLkMT9ekpAJVO4QqftDCvS1oPb8hwP4lI0s9iL/ChLoCxLxHbcHzqhf9Z X-Received: by 2002:a17:907:1189:: with SMTP id uz9mr1118380ejb.53.1589925138088; Tue, 19 May 2020 14:52:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589925138; cv=none; d=google.com; s=arc-20160816; b=tWhcn5b8/oXyMApUJnGQ1d+7H9uPw65qVtaqWKmhlgmgqc5MgL3H63IJJbyD1a2eST 4pzS5oJPlQt1XyaqRFvx/vLDivtPnFTndFYJI1X56HMxMoCVRnQ8ZkkrFJzU6pFiKQKt NcNWnOYjHvpiga3jYh7J8iVscHdwx+FtDBLHII5qxbeTs3rYvnyT5BXqHWuJW34XsuIo uT9ks5LOZQgvGmfqXaiEcV8B7+bR8gEjEPRPHODJYmvFYYABCoDg1cvVA9evROyG5iRn N8tYXhWSMBaHQwfVcneWi+ujsz+EU4iA330AY1GVTGk/inY9KV62u+01wdKzq9Em7IjT Uqdg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=HWh7S1dpOa7QIP8acpCJSjTcTSv+t3ttDXlvUOZfakk=; b=hwxmHAiQQ1iSIQxax1jE9EidyDQrt6GeQZhaFxAr4jtwr8yNOtX9XFqUvkjGGQgBt/ uoZwu0XALxPgbRFdAA+BYZl/xz6NeLqGy3O7rPcznhubCLjnnOKlBbLTGGDdZ9vOr1Rd Ru8RkmrG1jFq5C8VEs3Nd3gqTKrhTmHI9H/wjbRtf5k4kHozZRJxsyiPA6K9Rh6GsYZ9 gixd09nhZasQYegVpvUoO9TV+PVooajH9e7KRFz0OJcFrONfsY5DBjv3JPjtMKgy+mz5 Dcl/uhaR6nNp4XuzUK+piJskumBbyLlKvWGnDNJJwVNCL7yPfFXp0HIUvQRkNC2Rqd/G IimA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z3si655071ejm.403.2020.05.19.14.51.54; Tue, 19 May 2020 14:52:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728510AbgESVrp (ORCPT + 99 others); Tue, 19 May 2020 17:47:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40976 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728351AbgESVrf (ORCPT ); Tue, 19 May 2020 17:47:35 -0400 Received: from Galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5EB28C08C5C0; Tue, 19 May 2020 14:47:35 -0700 (PDT) Received: from [5.158.153.53] (helo=debian-buster-darwi.lab.linutronix.de.) by Galois.linutronix.de with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.80) (envelope-from ) id 1jbA4r-0002nf-QD; Tue, 19 May 2020 23:47:09 +0200 From: "Ahmed S. Darwish" To: Peter Zijlstra , Ingo Molnar , Will Deacon Cc: Thomas Gleixner , "Paul E. McKenney" , "Sebastian A. Siewior" , Steven Rostedt , LKML , "Ahmed S. Darwish" , Pablo Neira Ayuso , Jozsef Kadlecsik , Florian Westphal , "David S. Miller" , Jakub Kicinski , netfilter-devel@vger.kernel.org, coreteam@netfilter.org, netdev@vger.kernel.org Subject: [PATCH v1 16/25] netfilter: nft_set_rbtree: Use sequence counter with associated rwlock Date: Tue, 19 May 2020 23:45:38 +0200 Message-Id: <20200519214547.352050-17-a.darwish@linutronix.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200519214547.352050-1-a.darwish@linutronix.de> References: <20200519214547.352050-1-a.darwish@linutronix.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A sequence counter write side critical section must be protected by some form of locking to serialize writers. A plain seqcount_t does not contain the information of which lock must be held when entering a write side critical section. Use the new seqcount_rwlock_t data type, which allows to associate a rwlock with the sequence counter. This enables lockdep to verify that the rwlock used for writer serialization is held when the write side critical section is entered. If lockdep is disabled this lock association is compiled out and has neither storage size nor runtime overhead. Signed-off-by: Ahmed S. Darwish --- net/netfilter/nft_set_rbtree.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/netfilter/nft_set_rbtree.c b/net/netfilter/nft_set_rbtree.c index 3ffef454d469..f50d986d43c5 100644 --- a/net/netfilter/nft_set_rbtree.c +++ b/net/netfilter/nft_set_rbtree.c @@ -18,7 +18,7 @@ struct nft_rbtree { struct rb_root root; rwlock_t lock; - seqcount_t count; + seqcount_rwlock_t count; struct delayed_work gc_work; }; @@ -505,7 +505,7 @@ static int nft_rbtree_init(const struct nft_set *set, struct nft_rbtree *priv = nft_set_priv(set); rwlock_init(&priv->lock); - seqcount_init(&priv->count); + seqcount_rwlock_init(&priv->count, &priv->lock); priv->root = RB_ROOT; INIT_DEFERRABLE_WORK(&priv->gc_work, nft_rbtree_gc); -- 2.20.1