inet: frags: Remove unnecessary smp_store_release/READ_ONCE
authorHerbert Xu <herbert@gondor.apana.org.au>
Wed, 29 May 2019 05:40:26 +0000 (13:40 +0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 30 May 2019 18:51:29 +0000 (11:51 -0700)
commit32707c4dfa20b01d6a3c8d2797daa52bfc188add
tree14d57d834cd97a5dd58b8ef0cb44847f83fb45ac
parent5080e28d94a27e182e323854a9ba2a0718e9e3bf
inet: frags: Remove unnecessary smp_store_release/READ_ONCE

The smp_store_release call in fqdir_exit cannot protect the setting
of fqdir->dead as claimed because its memory barrier is only
guaranteed to be one-way and the barrier precedes the setting of
fqdir->dead.

IOW it doesn't provide any barriers between fq->dir and the following
hash table destruction.

In fact, the code is safe anyway because call_rcu does provide both
the memory barrier as well as a guarantee that when the destruction
work starts executing all RCU readers will see the updated value for
fqdir->dead.

Therefore this patch removes the unnecessary smp_store_release call
as well as the corresponding READ_ONCE on the read-side in order to
not confuse future readers of this code.  Comments have been added
in their places.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/inet_fragment.c