summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJakub Kicinski <kuba@kernel.org>2025-11-03 17:40:59 -0800
committerJakub Kicinski <kuba@kernel.org>2025-11-03 17:41:01 -0800
commit998b5d9683d9c415bd3ad0dcc9e8f2d0d34afaa4 (patch)
tree2c460ed9ef84fd7e754d6f17d362d104bc61ad2e /include
parent209ff7af79bf495e6c3d300bf3dea6aeea973bc7 (diff)
parent7d99a7c6c6a3d0d6456520baa85d58095bf262ee (diff)
Merge branch 'mpls-remove-rtnl-dependency'
Kuniyuki Iwashima says: ==================== mpls: Remove RTNL dependency. MPLS uses RTNL 1) to guarantee the lifetime of struct mpls_nh.nh_dev 2) to protect net->mpls.platform_label , but neither actually requires RTNL. If struct mpls_nh holds a refcnt for nh_dev, we do not need RTNL, and it can be replaced with a dedicated mutex. The series removes RTNL from net/mpls/. Overview: Patch 1 is misc cleanup. Patch 2 - 9 are prep to drop RTNL for RTM_{NEW,DEL,GET}ROUTE handlers. Patch 10 & 11 converts mpls_dump_routes() and RTM_GETNETCONF to RCU. Patch 12 replaces RTNL with a new per-netns mutex. Patch 13 drops RTNL from RTM_{NEW,DEL,GET}ROUTE. ==================== Link: https://patch.msgid.link/20251029173344.2934622-1-kuniyu@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'include')
-rw-r--r--include/net/addrconf.h5
-rw-r--r--include/net/netns/mpls.h1
2 files changed, 6 insertions, 0 deletions
diff --git a/include/net/addrconf.h b/include/net/addrconf.h
index 9e5e95988b9e..78e8b877fb25 100644
--- a/include/net/addrconf.h
+++ b/include/net/addrconf.h
@@ -347,6 +347,11 @@ static inline struct inet6_dev *__in6_dev_get(const struct net_device *dev)
return rcu_dereference_rtnl(dev->ip6_ptr);
}
+static inline struct inet6_dev *in6_dev_rcu(const struct net_device *dev)
+{
+ return rcu_dereference(dev->ip6_ptr);
+}
+
static inline struct inet6_dev *__in6_dev_get_rtnl_net(const struct net_device *dev)
{
return rtnl_net_dereference(dev_net(dev), dev->ip6_ptr);
diff --git a/include/net/netns/mpls.h b/include/net/netns/mpls.h
index 19ad2574b267..6682e51513ef 100644
--- a/include/net/netns/mpls.h
+++ b/include/net/netns/mpls.h
@@ -16,6 +16,7 @@ struct netns_mpls {
int default_ttl;
size_t platform_labels;
struct mpls_route __rcu * __rcu *platform_label;
+ struct mutex platform_mutex;
struct ctl_table_header *ctl;
};