projects
/
linux-block.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
482ad2a
)
ipv4: add RCU protection to ip4_dst_hoplimit()
author
Eric Dumazet
<edumazet@google.com>
Wed, 5 Feb 2025 15:51:10 +0000
(15:51 +0000)
committer
Jakub Kicinski
<kuba@kernel.org>
Fri, 7 Feb 2025 00:14:14 +0000
(16:14 -0800)
ip4_dst_hoplimit() must use RCU protection to make
sure the net structure it reads does not disappear.
Fixes:
fa50d974d104
("ipv4: Namespaceify ip_default_ttl sysctl knob")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link:
https://patch.msgid.link/20250205155120.1676781-3-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/route.h
patch
|
blob
|
blame
|
history
diff --git
a/include/net/route.h
b/include/net/route.h
index f86775be3e2934697533a61f566aca1ef196d74e..c605fd5ec0c08cc7658c3cf6aa6223790d463ede 100644
(file)
--- a/
include/net/route.h
+++ b/
include/net/route.h
@@
-382,10
+382,15
@@
static inline int inet_iif(const struct sk_buff *skb)
static inline int ip4_dst_hoplimit(const struct dst_entry *dst)
{
int hoplimit = dst_metric_raw(dst, RTAX_HOPLIMIT);
- struct net *net = dev_net(dst->dev);
- if (hoplimit == 0)
+ if (hoplimit == 0) {
+ const struct net *net;
+
+ rcu_read_lock();
+ net = dev_net_rcu(dst->dev);
hoplimit = READ_ONCE(net->ipv4.sysctl_ip_default_ttl);
+ rcu_read_unlock();
+ }
return hoplimit;
}