From: SeongJae Park <sj@kernel.org>
To: Joel Fernandes <joel@joelfernandes.org>
Cc: SeongJae Park <sj@kernel.org>,
paulmck@kernel.org, corbet@lwn.net, rcu@vger.kernel.org,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 4/4] Docs/RCU/rculist_nulls: Drop unnecessary '_release' in insert function
Date: Fri, 9 Jun 2023 19:12:06 +0000 [thread overview]
Message-ID: <20230609191206.30465-1-sj@kernel.org> (raw)
In-Reply-To: <CAEXW_YQFqW2QcAuHZEhc_GaUaB-=QOS0WgUOizd=FYwtFQ8vag@mail.gmail.com>
On Fri, 19 May 2023 14:52:50 -0400 Joel Fernandes <joel@joelfernandes.org> wrote:
> On Thu, May 18, 2023 at 6:40 PM SeongJae Park <sj@kernel.org> wrote:
> >
> > The document says we can avoid extra smp_rmb() in lockless_lookup() and
> > extra _release() in insert function when hlist_nulls is used. However,
> > the example code snippet for the insert function is still using the
> > extra _release(). Drop it.
> >
> > Signed-off-by: SeongJae Park <sj@kernel.org>
> > ---
> > Documentation/RCU/rculist_nulls.rst | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/Documentation/RCU/rculist_nulls.rst b/Documentation/RCU/rculist_nulls.rst
> > index 5cd6f3f8810f..463270273d89 100644
> > --- a/Documentation/RCU/rculist_nulls.rst
> > +++ b/Documentation/RCU/rculist_nulls.rst
> > @@ -191,7 +191,7 @@ scan the list again without harm.
> > obj = kmem_cache_alloc(cachep);
> > lock_chain(); // typically a spin_lock()
> > obj->key = key;
> > - atomic_set_release(&obj->refcnt, 1); // key before refcnt
> > + atomic_set(&obj->refcnt, 1);
> > /*
> > * insert obj in RCU way (readers might be traversing chain)
> > */
>
> If write to ->refcnt of 1 is reordered with setting of ->key, what
> prevents the 'lookup algorithm' from doing a key match (obj->key ==
> key) before the refcount has been initialized?
>
> Are we sure the reordering mentioned in the document is the same as
> the reordering prevented by the atomic_set_release()?
Paul, may I ask your opinion?
Thanks,
SJ
>
> For the other 3 patches, feel free to add:
> Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org>
>
> thanks,
>
> - Joel
next prev parent reply other threads:[~2023-06-09 19:12 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-18 22:40 [PATCH 0/4] Docs/RCU/rculist_nulls: Minor fixups SeongJae Park
2023-05-18 22:40 ` [PATCH 1/4] Docs/RCU/rculist_nulls: Fix trivial coding style SeongJae Park
2023-05-18 22:40 ` [PATCH 2/4] Docs/RCU/rculist_nulls: Assign 'obj' before use from the examples SeongJae Park
2023-05-18 22:40 ` [PATCH 3/4] Docs/RCU/rculist_nulls: Fix hlist_head field name of 'obj' SeongJae Park
2023-05-18 22:40 ` [PATCH 4/4] Docs/RCU/rculist_nulls: Drop unnecessary '_release' in insert function SeongJae Park
2023-05-19 18:52 ` Joel Fernandes
2023-06-09 19:12 ` SeongJae Park [this message]
2023-06-09 23:42 ` Paul E. McKenney
2023-06-10 0:20 ` SeongJae Park
2023-06-10 5:52 ` Alan Huang
2023-06-10 5:37 ` Alan Huang
2023-06-10 11:04 ` Alan Huang
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=20230609191206.30465-1-sj@kernel.org \
--to=sj@kernel.org \
--cc=corbet@lwn.net \
--cc=joel@joelfernandes.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=paulmck@kernel.org \
--cc=rcu@vger.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.