FAILED: patch "[PATCH] net: move altnames together with the netdevice" failed to apply to 5.15-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.15.y
git checkout FETCH_HEAD
git cherry-pick -x 8e15aee621618a3ee3abecaf1fd8c1428098b7ef
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2023102011-escapable-flattop-efeb@gregkh' --subject-prefix 'PATCH 5.15.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 8e15aee621618a3ee3abecaf1fd8c1428098b7ef Mon Sep 17 00:00:00 2001
From: Jakub Kicinski <[email protected]>
Date: Tue, 17 Oct 2023 18:38:16 -0700
Subject: [PATCH] net: move altnames together with the netdevice
The altname nodes are currently not moved to the new netns when netdevice itself moves:
[ ~]# ip netns add test
[ ~]# ip -netns test link add name eth0 type dummy
[ ~]# ip -netns test link property add dev eth0 altname some-name
[ ~]# ip -netns test link show dev some-name
2: eth0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 1e:67:ed:19:3d:24 brd ff:ff:ff:ff:ff:ff
altname some-name
[ ~]# ip -netns test link set dev eth0 netns 1
[ ~]# ip link
...
3: eth0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 02:40:88:62:ec:b8 brd ff:ff:ff:ff:ff:ff
altname some-name [ ~]# ip li show dev some-name
Device "some-name" does not exist.
Remove them from the hash table when device is unlisted and add back when listed again.
net/core/dev.c +9 -4
@@ -381,6 +381,7 @@ static void netdev_name_node_alt_flush(struct net_device *dev)/* Device list insertion */ static void list_netdevice (struct net_device *dev) { +struct netdev_name_node *name_node;struct net *net =dev_net (dev);ASSERT_RTNL ();
@@ -391,6 +392,10 @@ static void list_netdevice(struct net_device *dev)hlist_add_head_rcu (&dev->index_hlist,dev_index_hash (net, dev->ifindex));write_unlock (&dev_base_lock); + +netdev_for_each_altname (dev, name_node) +netdev_name_node_add (net, name_node); +/* We reserved the ifindex, this can't fail */ WARN_ON (xa_store (&net->dev_by_index, dev->ifindex, dev,GFP_KERNEL ));
@@ -402,12 +407,16 @@ static void list_netdevice(struct net_device *dev)*/ static void unlist_netdevice (struct net_device *dev,bool lock) { +struct netdev_name_node *name_node;struct net *net =dev_net (dev);ASSERT_RTNL ();xa_erase (&net->dev_by_index, dev->ifindex); +netdev_for_each_altname (dev, name_node) +netdev_name_node_del (name_node); +/* Unlink dev from the device chain */ if (lock)write_lock (&dev_base_lock);
@@ -10942,7 +10951,6 @@ void unregister_netdevice_many_notify(struct list_head *head,synchronize_net ();list_for_each_entry (dev, head, unreg_list) { -struct netdev_name_node *name_node;struct sk_buff *skb =NULL ;/* Shutdown queueing discipline. */
@@ -10970,9 +10978,6 @@ void unregister_netdevice_many_notify(struct list_head *head,dev_uc_flush (dev);dev_mc_flush (dev); -netdev_for_each_altname (dev, name_node) -netdev_name_node_del (name_node); -synchronize_rcu ();netdev_name_node_alt_flush (dev);netdev_name_node_free (dev->name_node);