forked from Minki/linux
ipv4: Fix data-races around sysctl_fib_multipath_hash_policy.
While reading sysctl_fib_multipath_hash_policy, it can be changed
concurrently. Thus, we need to add READ_ONCE() to its readers.
Fixes: bf4e0a3db9
("net: ipv4: add support for ECMP hash policy choice")
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
87507bcb4f
commit
7998c12a08
@ -10324,7 +10324,7 @@ static void mlxsw_sp_mp4_hash_init(struct mlxsw_sp *mlxsw_sp,
|
||||
unsigned long *fields = config->fields;
|
||||
u32 hash_fields;
|
||||
|
||||
switch (net->ipv4.sysctl_fib_multipath_hash_policy) {
|
||||
switch (READ_ONCE(net->ipv4.sysctl_fib_multipath_hash_policy)) {
|
||||
case 0:
|
||||
mlxsw_sp_mp4_hash_outer_addr(config);
|
||||
break;
|
||||
|
@ -2048,7 +2048,7 @@ int fib_multipath_hash(const struct net *net, const struct flowi4 *fl4,
|
||||
struct flow_keys hash_keys;
|
||||
u32 mhash = 0;
|
||||
|
||||
switch (net->ipv4.sysctl_fib_multipath_hash_policy) {
|
||||
switch (READ_ONCE(net->ipv4.sysctl_fib_multipath_hash_policy)) {
|
||||
case 0:
|
||||
memset(&hash_keys, 0, sizeof(hash_keys));
|
||||
hash_keys.control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS;
|
||||
|
Loading…
Reference in New Issue
Block a user