]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
net: Check CHANGEUPPER notifier return value
authorIdo Schimmel <idosch@mellanox.com>
Thu, 3 Dec 2015 11:12:03 +0000 (12:12 +0100)
committerBrian Maly <brian.maly@oracle.com>
Tue, 20 Nov 2018 22:09:46 +0000 (17:09 -0500)
switchdev drivers reflect the newly requested topology to hardware when
CHANGEUPPER is received, after software links were already formed.
However, the operation can fail and user will not be notified, as the
return value of the notifier is not checked.

Add this check and rollback software links if necessary.

Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit b03804e7c3ad41c265c0ca21ddb306b252b4f99f)
Orabug: 28122104
Signed-off-by: Vijay Balakrishna <vijay.balakrishna@oracle.com>
Reviewed-by: Si-Wei Liu <si-wei.liu@oracle.com>
Reviewed-by: Shannon Nelson <shannon.nelson@oracle.com>
Signed-off-by: Brian Maly <brian.maly@oracle.com>
net/core/dev.c

index a81d39c31ac6951b515e374995edff7d2a5502eb..74e259c88b773e9b8f2b8fe2d330f9b59b1b1685 100644 (file)
@@ -5315,8 +5315,12 @@ static int __netdev_upper_dev_link(struct net_device *dev,
                        goto rollback_lower_mesh;
        }
 
-       call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
-                                     &changeupper_info.info);
+       ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
+                                           &changeupper_info.info);
+       ret = notifier_to_errno(ret);
+       if (ret)
+               goto rollback_lower_mesh;
+
        return 0;
 
 rollback_lower_mesh: