> 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@xxxxxxxxxxxxxx/