Patch "netlink: ensure to loop over all netns in genlmsg_multicast_allns()" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
netlink: ensure to loop over all netns in genlmsg_multicast_allns()
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
netlink-ensure-to-loop-over-all-netns-in-genlmsg_multicast_allns.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Thu Mar 8 10:22:29 PST 2018
From: Nicolas Dichtel <[email protected]>
Date: Tue, 6 Feb 2018 14:48:32 +0100
Subject: netlink: ensure to loop over all netns in genlmsg_multicast_allns()
From: Nicolas Dichtel <[email protected]>
[ Upstream commit cb9f7a9a5c96a773bbc9c70660dc600cfff82f82 ]
Nowadays, nlmsg_multicast() returns only 0 or -ESRCH but this was not the case when commit 134e63756d5f was pushed.
However, there was no reason to stop the loop if a netns does not have listeners.
Returns -ESRCH only if there was no listeners in all netns.
To avoid having the same problem in the future, I didn't take the assumption that nlmsg_multicast() returns only 0 or -ESRCH.
--- net/netlink/genetlink.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
net/netlink/genetlink.c +10 -2
@@ -1118,6 +1118,7 @@ static int genlmsg_mcast(struct sk_buff {struct sk_buff *tmp;struct net *net, *prev =NULL ; +bool delivered = false;int err;for_each_net_rcu (net) {
@@ -1129,14 +1130,21 @@ static int genlmsg_mcast(struct sk_buff } err =nlmsg_multicast (prev->genl_sock, tmp, portid, group, flags); -if (err) +if (!err) + delivered = true; +else if (err != -ESRCH ) goto error; } prev = net; } -return nlmsg_multicast (prev->genl_sock, skb, portid, group, flags); + err =nlmsg_multicast (prev->genl_sock, skb, portid, group, flags); +if (!err) + delivered = true; +else if (err != -ESRCH ) + goto error; +return delivered ?0 : -ESRCH ; error:kfree_skb (skb);return err;
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/netlink-ensure-to-loop-over-all-netns-in-genlmsg_multicast_allns.patch