Messages in this thread | | | Date | Fri, 10 Apr 2020 12:56:58 +0100 | From | Will Deacon <> | Subject | Re: [PATCH] seqlock: Use while instead of if+goto in __read_seqcount_begin |
| |
On Thu, Apr 09, 2020 at 09:45:58PM +0800, Muchun Song wrote: > The creators of the C language gave us the while keyword. Let's use > that instead of synthesizing it from if+goto. > > Signed-off-by: Muchun Song <songmuchun@bytedance.com> > --- > include/linux/seqlock.h | 6 +----- > 1 file changed, 1 insertion(+), 5 deletions(-) > > diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h > index 8b97204f35a77..7bdea019814ce 100644 > --- a/include/linux/seqlock.h > +++ b/include/linux/seqlock.h > @@ -125,12 +125,8 @@ static inline unsigned __read_seqcount_begin(const seqcount_t *s) > { > unsigned ret; > > -repeat: > - ret = READ_ONCE(s->sequence); > - if (unlikely(ret & 1)) { > + while (unlikely((ret = READ_ONCE(s->sequence)) & 1)) > cpu_relax(); > - goto repeat; > - } > kcsan_atomic_next(KCSAN_SEQLOCK_REGION_MAX); > return ret;
Patch looks fine to me, but I'll leave it to Peter as I don't have a preference either way.
Will
| |