Patch "rtnetlink: catch -EOPNOTSUPP errors from ndo_bridge_getlink" has been added to the 4.2-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
rtnetlink: catch -EOPNOTSUPP errors from ndo_bridge_getlink
to the 4.2-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:
rtnetlink-catch-eopnotsupp-errors-from-ndo_bridge_getlink.patch
and it can be found in the queue-4.2 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 Wed Sep 30 05:25:07 CEST 2015
From: Roopa Prabhu <[email protected]>
Date: Tue, 15 Sep 2015 14:44:29 -0700
Subject: rtnetlink: catch -EOPNOTSUPP errors from ndo_bridge_getlink
From: Roopa Prabhu <[email protected]>
[ Upstream commit d64f69b0373a7d0bcec8b5da7712977518a8f42b ]
problem reported:
kernel 4.1.3 ------------ # bridge vlan port vlan ids eth0 1 PVID Egress Untagged 90 91 92 93 94 95 96 97 98 99 100 vmbr0 1 PVID Egress Untagged 94 kernel 4.2 ----------- # bridge vlan port vlan ids
ndo_bridge_getlink can return -EOPNOTSUPP when an interfaces ndo_bridge_getlink op is set to switchdev_port_bridge_getlink and CONFIG_SWITCHDEV is not defined. This today can happen to bond, rocker and team devices. This patch adds -EOPNOTSUPP checks after calls to ndo_bridge_getlink.
--- net/core/rtnetlink.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-)
net/core/rtnetlink.c +16 -10
@@ -3021,6 +3021,7 @@ static int rtnl_bridge_getlink(struct sku32 portid =NETLINK_CB (cb->skb).portid;u32 seq = cb->nlh->nlmsg_seq;u32 filter_mask =0 ; +int err;if (nlmsg_len (cb->nlh) >sizeof (struct ifinfomsg )) {struct nlattr *extfilt;
@@ -3041,20 +3042,25 @@ static int rtnl_bridge_getlink(struct skstruct net_device *br_dev =netdev_master_upper_dev_get (dev);if (br_dev && br_dev->netdev_ops->ndo_bridge_getlink) { -if (idx >= cb->args[0 ] && - br_dev->netdev_ops->ndo_bridge_getlink ( - skb, portid, seq, dev, filter_mask, -NLM_F_MULTI ) <0 ) -break ; +if (idx >= cb->args[0 ]) { + err = br_dev->netdev_ops->ndo_bridge_getlink ( + skb, portid, seq, dev, + filter_mask,NLM_F_MULTI ); +if (err <0 && err != -EOPNOTSUPP ) +break ; + } idx++; }if (ops->ndo_bridge_getlink) { -if (idx >= cb->args[0 ] && - ops->ndo_bridge_getlink (skb, portid, seq, dev, - filter_mask, -NLM_F_MULTI ) <0 ) -break ; +if (idx >= cb->args[0 ]) { + err = ops->ndo_bridge_getlink (skb, portid, + seq, dev, + filter_mask, +NLM_F_MULTI ); +if (err <0 && err != -EOPNOTSUPP ) +break ; + } idx++; } }
Patches currently in stable-queue which might be from [email protected] are
queue-4.2/rtnetlink-catch-eopnotsupp-errors-from-ndo_bridge_getlink.patch queue-4.2/ipv6-fix-multipath-route-replace-error-recovery.patch queue-4.2/fib_rules-fix-fib-rule-dumps-across-multiple-skbs.patch