net: avoid possible false sharing in sk_leave_memory_pressure()
As mentioned in https://github.com/google/ktsan/wiki/READ_ONCE-and-WRITE_ONCE#it-may-improve-performance a C compiler can legally transform : if (memory_pressure && *memory_pressure) *memory_pressure = 0; to : if (memory_pressure) *memory_pressure = 0; Fixes:0604475119
("tcp: add TCPMemoryPressuresChrono counter") Fixes:180d8cd942
("foundations of per-cgroup memory pressure controlling.") Fixes:3ab224be6d
("[NET] CORE: Introducing new memory accounting interface.") Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
This commit is contained in:
parent
4ffdd22e49
commit
503978aca4
|
@ -2334,8 +2334,8 @@ static void sk_leave_memory_pressure(struct sock *sk)
|
||||||
} else {
|
} else {
|
||||||
unsigned long *memory_pressure = sk->sk_prot->memory_pressure;
|
unsigned long *memory_pressure = sk->sk_prot->memory_pressure;
|
||||||
|
|
||||||
if (memory_pressure && *memory_pressure)
|
if (memory_pressure && READ_ONCE(*memory_pressure))
|
||||||
*memory_pressure = 0;
|
WRITE_ONCE(*memory_pressure, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue