All of lore.kernel.org
 help / color / mirror / Atom feed
From: Florian Westphal <fw@strlen.de>
To: Will Deacon <will@kernel.org>
Cc: Florian Westphal <fw@strlen.de>,
	subashab@codeaurora.org, pablo@netfilter.org,
	Sean Tranchetti <stranche@codeaurora.org>,
	netfilter-devel@vger.kernel.org, peterz@infradead.org,
	tglx@linutronix.de
Subject: Re: [PATCH nf] x_tables: Properly close read section with read_seqcount_retry
Date: Wed, 18 Nov 2020 14:14:19 +0100	[thread overview]
Message-ID: <20201118131419.GK22792@breakpoint.cc> (raw)
In-Reply-To: <20201118125406.GA2029@willie-the-truck>

Will Deacon <will@kernel.org> wrote:
> > diff --git a/net/netfilter/x_tables.c b/net/netfilter/x_tables.c
> > index af22dbe85e2c..b5911985d1eb 100644
> > --- a/net/netfilter/x_tables.c
> > +++ b/net/netfilter/x_tables.c
> > @@ -1384,7 +1384,7 @@ xt_replace_table(struct xt_table *table,
> >          * private.
> >          */
> >         smp_wmb();
> > -       table->private = newinfo;
> > +       WRITE_ONCE(table->private, newinfo);
> 
> ... you could make this rcu_assign_pointer() and get rid of the preceding
> smp_wmb()...

Yes, it would make sense to add proper rcu annotation as well.

> >         /* make sure all cpus see new ->private value */
> >         smp_wmb();
> 
> ... and this smp_wmb() is no longer needed because synchronize_rcu()
> takes care of the ordering.

Right, thanks.

> > @@ -1394,19 +1394,7 @@ xt_replace_table(struct xt_table *table,
> >          * may still be using the old entries...
> >          */
> >         local_bh_enable();
> > -
> > -       /* ... so wait for even xt_recseq on all cpus */
> > -       for_each_possible_cpu(cpu) {
> > -               seqcount_t *s = &per_cpu(xt_recseq, cpu);
> > -               u32 seq = raw_read_seqcount(s);
> > -
> > -               if (seq & 1) {
> > -                       do {
> > -                               cond_resched();
> > -                               cpu_relax();
> > -                       } while (seq == raw_read_seqcount(s));
> > -               }
> > -       }
> 
> Do we still need xt_write_recseq_{begin,end}() with this removed?

Yes, it enables userspace to get stable per rule packet and byte counters.

  reply	other threads:[~2020-11-18 13:14 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-14  2:21 [PATCH nf] x_tables: Properly close read section with read_seqcount_retry Sean Tranchetti
2020-11-14 16:53 ` Florian Westphal
2020-11-16  6:32   ` subashab
2020-11-16 14:18     ` Florian Westphal
2020-11-16 16:26       ` subashab
2020-11-16 17:04         ` Florian Westphal
2020-11-16 17:51           ` subashab
2020-11-16 18:20             ` Florian Westphal
2020-11-18 12:13               ` Will Deacon
2020-11-18 12:42                 ` Florian Westphal
2020-11-18 12:54                   ` Will Deacon
2020-11-18 13:14                     ` Florian Westphal [this message]
2020-11-18 20:39                       ` subashab
2020-11-18 21:10                         ` Florian Westphal
2020-11-20  5:53                           ` subashab
2020-11-20  6:31                             ` Florian Westphal
2020-11-20  9:44                             ` Peter Zijlstra
2020-11-20  9:53                               ` Peter Zijlstra
2020-11-20 10:20                                 ` Florian Westphal
2020-11-20 10:47                                   ` Peter Zijlstra
2020-11-21  1:27                                     ` subashab

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201118131419.GK22792@breakpoint.cc \
    --to=fw@strlen.de \
    --cc=netfilter-devel@vger.kernel.org \
    --cc=pablo@netfilter.org \
    --cc=peterz@infradead.org \
    --cc=stranche@codeaurora.org \
    --cc=subashab@codeaurora.org \
    --cc=tglx@linutronix.de \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.