The call state may be changed at any time by the data-ready routine in
response to received packets, so if the call state is to be read and acted
upon several times in a function, READ_ONCE() must be used unless the call
state lock is held.
Signed-off-by: Baptiste Lepers <redacted>
---
net/rxrpc/input.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
From: David Howells <dhowells@redhat.com> Date: 2021-01-07 11:07:37
Baptiste Lepers [off-list ref] wrote:
The call state may be changed at any time by the data-ready routine in
response to received packets, so if the call state is to be read and acted
upon several times in a function, READ_ONCE() must be used unless the call
state lock is held.
I'm going to add:
As it happens, we used READ_ONCE() to read the state a few lines above the
unmarked read in rxrpc_input_data(), so use that value rather than
re-reading it.
to the commit message, if that's okay by you.
David
Yes, that's fine with me. Thanks for the clarification of the commit message.
(Sorry for the double send, I forgot to enable plain text on my
previous answer.)
Baptiste.
On Thu, Jan 7, 2021 at 10:05 PM David Howells [off-list ref] wrote:
Baptiste Lepers [off-list ref] wrote:
quoted
The call state may be changed at any time by the data-ready routine in
response to received packets, so if the call state is to be read and acted
upon several times in a function, READ_ONCE() must be used unless the call
state lock is held.
I'm going to add:
As it happens, we used READ_ONCE() to read the state a few lines above the
unmarked read in rxrpc_input_data(), so use that value rather than
re-reading it.
to the commit message, if that's okay by you.
David