Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp6375042yba; Thu, 11 Apr 2019 18:53:34 -0700 (PDT) X-Google-Smtp-Source: APXvYqyaKx8GEWy5U5+klzpa0gvckNcpRMwrqbLkdV176wJYZlfg9ztHw90vqva1ZmJsSMdcRBC6 X-Received: by 2002:a17:902:4827:: with SMTP id s36mr54281607pld.296.1555034014882; Thu, 11 Apr 2019 18:53:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555034014; cv=none; d=google.com; s=arc-20160816; b=B3cNLO8R3MHL7j1+jAw+PS02rPjUy+YcICg0V1tflRNfFrA0H6FWh4+frne/dtztVy vVwV1uxl+IuJZsZ5xDRQb+mh2hTMf0wadhEOP58DLd903hmxwynrX1XxSrY5XSyD1GzV 2MEhf4Xo5OurSVUa5ZqB5hSvIJaQwLbyzfw0pa0P/E7R595c2wa/ciHghxMqlQNAY0p9 XJvaVHePTSzNgGg51p7eoxBVyXamsWFYg89sVvPMaRXmePIUIMNNaewP2QR0dhgkwruI bc8+PUDMP+FP6UmI8PoqkULXWG7NWLqg/2K116opGXfbPh31xkz5V/6Qc40nJHnAH7Vh mz8w== 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 :user-agent:references:in-reply-to:message-id:cc:subject:date:to :from; bh=+E8vipQKS43M68M+yoSmBdpdkSU+j6yO8Av3BC1YAkY=; b=YS/YSMg8FcMH9prk/bAbEWl4YNoQ4tofoxVxs1t0bPCVfNiYALvec7Fw1mv8+8PDKn DyWSwIepJAt0NPORCw1OOsZPVFn+gk+r+JIGaUB/T+INDGgO11vORnFhyb2nhUCJmlbG dQqFM8RymB4NVxoInkAVsukMSRGQNAY6URxG017UtNKZtdsC2qbYzQpJi5fn1JA3YO8W 0wPecsfulp69/Bimtai5TxsLdiBdg3RQu7UfPKJ7CX82r2kzo0HasKgnx0LgmMNFlJHl TubVpCoW33n1wbz9k433FcI+t+l3i/hl0YzLawR01G5s4WYTXibN3FKiP3b4VANgfINy nE9w== ARC-Authentication-Results: i=1; mx.google.com; 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 m79si37298104pfi.81.2019.04.11.18.53.16; Thu, 11 Apr 2019 18:53:34 -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; 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 S1726800AbfDLBwg (ORCPT + 99 others); Thu, 11 Apr 2019 21:52:36 -0400 Received: from mx2.suse.de ([195.135.220.15]:48850 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726661AbfDLBwf (ORCPT ); Thu, 11 Apr 2019 21:52:35 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id BCD11AD03; Fri, 12 Apr 2019 01:52:33 +0000 (UTC) From: NeilBrown To: Thomas Graf , Herbert Xu , David Miller Date: Fri, 12 Apr 2019 11:52:07 +1000 Subject: [PATCH 1/5] rhashtable: fix some __rcu annotation errors Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Guenter Roeck Message-ID: <155503392792.17793.11454059177248116925.stgit@noble.brown> In-Reply-To: <155503371949.17793.8266195008003399968.stgit@noble.brown> References: <155503371949.17793.8266195008003399968.stgit@noble.brown> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org With these annotations, the rhashtable now gets no warnings when compiled with "C=1" for sparse checking. Signed-off-by: NeilBrown --- include/linux/rhashtable.h | 11 ++++++----- lib/rhashtable.c | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/include/linux/rhashtable.h b/include/linux/rhashtable.h index 460c0eaf6b96..2711cbf01b64 100644 --- a/include/linux/rhashtable.h +++ b/include/linux/rhashtable.h @@ -40,7 +40,7 @@ * the chain. To avoid dereferencing this pointer without clearing * the bit first, we use an opaque 'struct rhash_lock_head *' for the * pointer stored in the bucket. This struct needs to be defined so - * that rcu_derefernce() works on it, but it has no content so a + * that rcu_dereference() works on it, but it has no content so a * cast is needed for it to be useful. This ensures it isn't * used by mistake with clearing the lock bit first. */ @@ -130,10 +130,10 @@ static inline void rht_unlock(struct bucket_table *tbl, } static inline void rht_assign_unlock(struct bucket_table *tbl, - struct rhash_lock_head **bkt, + struct rhash_lock_head __rcu **bkt, struct rhash_head *obj) { - struct rhash_head **p = (struct rhash_head **)bkt; + struct rhash_head __rcu **p = (struct rhash_head __rcu **)bkt; lock_map_release(&tbl->dep_map); rcu_assign_pointer(*p, obj); @@ -556,6 +556,7 @@ static inline struct rhash_head *__rhashtable_lookup( }; struct rhash_lock_head __rcu * const *bkt; struct bucket_table *tbl; + struct rhash_head __rcu *head; struct rhash_head *he; unsigned int hash; @@ -564,8 +565,8 @@ static inline struct rhash_head *__rhashtable_lookup( hash = rht_key_hashfn(ht, tbl, key, params); bkt = rht_bucket(tbl, hash); do { - he = rht_ptr(rht_dereference_bucket_rcu(*bkt, tbl, hash)); - rht_for_each_rcu_from(he, he, tbl, hash) { + head = rht_ptr(rht_dereference_bucket_rcu(*bkt, tbl, hash)); + rht_for_each_rcu_from(he, head, tbl, hash) { if (params.obj_cmpfn ? params.obj_cmpfn(&arg, rht_obj(ht, he)) : rhashtable_compare(&arg, rht_obj(ht, he))) diff --git a/lib/rhashtable.c b/lib/rhashtable.c index a8583af43b59..ec485962de5f 100644 --- a/lib/rhashtable.c +++ b/lib/rhashtable.c @@ -224,7 +224,7 @@ static int rhashtable_rehash_one(struct rhashtable *ht, struct bucket_table *new_tbl = rhashtable_last_table(ht, old_tbl); int err = -EAGAIN; struct rhash_head *head, *next, *entry; - struct rhash_head **pprev = NULL; + struct rhash_head __rcu **pprev = NULL; unsigned int new_hash; if (new_tbl->nest) @@ -487,7 +487,7 @@ static void *rhashtable_lookup_one(struct rhashtable *ht, .ht = ht, .key = key, }; - struct rhash_head **pprev = NULL; + struct rhash_head __rcu **pprev = NULL; struct rhash_head *head; int elasticity;