projects
/
linux-2.6-microblaze.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
afec62c
)
ipv6: use RCU protection in ip6_default_advmss()
author
Eric Dumazet
<edumazet@google.com>
Wed, 5 Feb 2025 15:51:18 +0000
(15:51 +0000)
committer
Jakub Kicinski
<kuba@kernel.org>
Fri, 7 Feb 2025 00:14:15 +0000
(16:14 -0800)
ip6_default_advmss() needs rcu protection to make
sure the net structure it reads does not disappear.
Fixes:
5578689a4e3c
("[NETNS][IPV6] route6 - make route6 per namespace")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link:
https://patch.msgid.link/20250205155120.1676781-11-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv6/route.c
patch
|
blob
|
history
diff --git
a/net/ipv6/route.c
b/net/ipv6/route.c
index
7836282
..
ef2d23a
100644
(file)
--- a/
net/ipv6/route.c
+++ b/
net/ipv6/route.c
@@
-3196,13
+3196,18
@@
static unsigned int ip6_default_advmss(const struct dst_entry *dst)
{
struct net_device *dev = dst->dev;
unsigned int mtu = dst_mtu(dst);
- struct net *net
= dev_net(dev)
;
+ struct net *net;
mtu -= sizeof(struct ipv6hdr) + sizeof(struct tcphdr);
+ rcu_read_lock();
+
+ net = dev_net_rcu(dev);
if (mtu < net->ipv6.sysctl.ip6_rt_min_advmss)
mtu = net->ipv6.sysctl.ip6_rt_min_advmss;
+ rcu_read_unlock();
+
/*
* Maximal non-jumbo IPv6 payload is IPV6_MAXPLEN and
* corresponding MSS is IPV6_MAXPLEN - tcp_header_size.