From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751868AbdJWThN (ORCPT ); Mon, 23 Oct 2017 15:37:13 -0400 Received: from mail-qk0-f196.google.com ([209.85.220.196]:43637 "EHLO mail-qk0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751725AbdJWThL (ORCPT ); Mon, 23 Oct 2017 15:37:11 -0400 X-Google-Smtp-Source: ABhQp+TxTJeuCEiOvMkWkAyxsB2aJOJ2ppqP2Q5o9+2RN/+VSuDxTv85llu6HveK/eqFmngoZ3cUfQ== Date: Mon, 23 Oct 2017 15:37:04 -0400 From: Tim Hansen To: "Levin, Alexander (Sasha Levin)" Cc: "davem@davemloft.net" , "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH v2] net/sock: Update sk rcu iterator macro. Message-ID: <20171023193704.ekusped6ampujgqv@debian> References: <20171023153922.orgvwmuvokv6xbi4@debian> <20171023184247.p54glyvdkgaxht2f@sasha-lappy> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20171023184247.p54glyvdkgaxht2f@sasha-lappy> User-Agent: NeoMutt/20170609 (1.8.3) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Mon, Oct 23, 2017 at 06:42:50PM +0000, Levin, Alexander (Sasha Levin) wrote: > On Mon, Oct 23, 2017 at 11:39:22AM -0400, Tim Hansen wrote: > >Mark hlist nodes in sk rcu iterator as protected by the rcu. > >hlist_next_rcu accomplishes this and silences the warnings > >sparse throws for net/ipv4/udp.c and net/ipv6/udp.c. > > > >Found with make C=1 net/ipv4/udp.o on linux-next tag > >next-20171009. > > > >Signed-off-by: Tim Hansen > >--- > > include/net/sock.h | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > >diff --git a/include/net/sock.h b/include/net/sock.h > >index 64e5ac41b9cf..96cb7b7e4924 100644 > >--- a/include/net/sock.h > >+++ b/include/net/sock.h > >@@ -737,10 +737,10 @@ static inline void sk_add_bind_node(struct sock *sk, > > * > > */ > > #define sk_for_each_entry_offset_rcu(tpos, pos, head, offset) \ > >- for (pos = rcu_dereference((head)->first); \ > >+ for (pos = rcu_dereference(hlist_next_rcu((head)->first)); \ > > See below. > > > pos != NULL && \ > > ({ tpos = (typeof(*tpos) *)((void *)pos - offset); 1;}); \ > >- pos = rcu_dereference(pos->next)) > >+ pos = rcu_dereference(hlist_next_rcu(pos->next))) > > This will return the next-next node instead of just the next one. You > probably want just hlist_next_rcu(pos) here. > > -- > > Thanks, > Sasha Thanks Sasha, dumb oversight on my part. Sent in v3 of this patch.