[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <tencent_03614198A34E56D038455012AA31022D9C06@qq.com>
Date: Mon, 11 Mar 2024 10:34:55 +0800
From: linke li <lilinke99@...com>
To: leon@...nel.org
Cc: bmt@...ich.ibm.com,
jgg@...pe.ca,
lilinke99@...com,
linux-kernel@...r.kernel.org,
linux-rdma@...r.kernel.org
Subject: Re: [PATCH] RDMA/siw: Reuse value read using READ_ONCE instead of re-reading it
> If value can change between subsequent reads, then you need to use locks
> to make sure that it doesn't happen. Using READ_ONCE() doesn't solve the
> concurrency issue, but makes sure that compiler doesn't reorder reads
> and writes.
This code do not need to prevent other thread from writing on the flags.
This topic got quite a bit of discussion [1], quote from it:
(READ_ONCE and WRITE_ONCE)
That's often useful - lots of code doesn't really care if you get the
old or the new value, but the code *does* care that it gets *one*
value, and not some random mix of "I tested one value for validity,
then it got reloaded due to register pressure, and I actually used
another value".
And not some "I read one value, and it was a mix of two other values".
>From the original code, the first read seems to do the same things. So
READ_ONCE is probably ok here.
I just want to make sure the flags stored to wqe->sqe.flags is consistent
with the read used in the if condition.
[1]https://lore.kernel.org/lkml/CAHk-=wgG6Dmt1JTXDbrbXh_6s2yLjL=9pHo7uv0==LHFD+aBtg@mail.gmail.com/
Powered by blists - more mailing lists