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

icmp: Fix a data-race around sysctl_icmp_errors_use_inbound_ifaddr.

While reading sysctl_icmp_errors_use_inbound_ifaddr, it can be changed
concurrently.  Thus, we need to add READ_ONCE() to its reader.

Fixes: 1c2fb7f9 ("[IPV4]: Sysctl configurable icmp error source address.")
Signed-off-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent b04f9b7e
...@@ -693,7 +693,7 @@ void __icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info, ...@@ -693,7 +693,7 @@ void __icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info,
rcu_read_lock(); rcu_read_lock();
if (rt_is_input_route(rt) && if (rt_is_input_route(rt) &&
net->ipv4.sysctl_icmp_errors_use_inbound_ifaddr) READ_ONCE(net->ipv4.sysctl_icmp_errors_use_inbound_ifaddr))
dev = dev_get_by_index_rcu(net, inet_iif(skb_in)); dev = dev_get_by_index_rcu(net, inet_iif(skb_in));
if (dev) if (dev)
......
...@@ -635,6 +635,8 @@ static struct ctl_table ipv4_net_table[] = { ...@@ -635,6 +635,8 @@ static struct ctl_table ipv4_net_table[] = {
.maxlen = sizeof(u8), .maxlen = sizeof(u8),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dou8vec_minmax, .proc_handler = proc_dou8vec_minmax,
.extra1 = SYSCTL_ZERO,
.extra2 = SYSCTL_ONE
}, },
{ {
.procname = "icmp_ratelimit", .procname = "icmp_ratelimit",
......
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