Commit 7998c12a authored by Kuniyuki Iwashima's avatar Kuniyuki Iwashima Committed by David S. Miller

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: bf4e0a3d ("net: ipv4: add support for ECMP hash policy choice")
Signed-off-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 87507bcb
...@@ -10324,7 +10324,7 @@ static void mlxsw_sp_mp4_hash_init(struct mlxsw_sp *mlxsw_sp, ...@@ -10324,7 +10324,7 @@ static void mlxsw_sp_mp4_hash_init(struct mlxsw_sp *mlxsw_sp,
unsigned long *fields = config->fields; unsigned long *fields = config->fields;
u32 hash_fields; u32 hash_fields;
switch (net->ipv4.sysctl_fib_multipath_hash_policy) { switch (READ_ONCE(net->ipv4.sysctl_fib_multipath_hash_policy)) {
case 0: case 0:
mlxsw_sp_mp4_hash_outer_addr(config); mlxsw_sp_mp4_hash_outer_addr(config);
break; break;
......
...@@ -2048,7 +2048,7 @@ int fib_multipath_hash(const struct net *net, const struct flowi4 *fl4, ...@@ -2048,7 +2048,7 @@ int fib_multipath_hash(const struct net *net, const struct flowi4 *fl4,
struct flow_keys hash_keys; struct flow_keys hash_keys;
u32 mhash = 0; u32 mhash = 0;
switch (net->ipv4.sysctl_fib_multipath_hash_policy) { switch (READ_ONCE(net->ipv4.sysctl_fib_multipath_hash_policy)) {
case 0: case 0:
memset(&hash_keys, 0, sizeof(hash_keys)); memset(&hash_keys, 0, sizeof(hash_keys));
hash_keys.control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS; hash_keys.control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment