diff options
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_main.c | 6 | ||||
-rw-r--r-- | drivers/net/hyperv/netvsc_drv.c | 2 | ||||
-rw-r--r-- | drivers/net/ipvlan/ipvlan_main.c | 12 | ||||
-rw-r--r-- | drivers/net/vrf.c | 4 | ||||
-rw-r--r-- | include/linux/netdevice.h | 3 | ||||
-rw-r--r-- | net/8021q/vlan.c | 4 | ||||
-rw-r--r-- | net/core/dev.c | 4 | ||||
-rw-r--r-- | net/core/dev_ioctl.c | 2 | ||||
-rw-r--r-- | net/core/net-sysfs.c | 2 | ||||
-rw-r--r-- | net/core/rtnetlink.c | 3 | ||||
-rw-r--r-- | net/ipv4/devinet.c | 2 | ||||
-rw-r--r-- | net/ipv4/ipconfig.c | 6 | ||||
-rw-r--r-- | net/openvswitch/vport-geneve.c | 2 | ||||
-rw-r--r-- | net/openvswitch/vport-gre.c | 2 | ||||
-rw-r--r-- | net/openvswitch/vport-vxlan.c | 2 |
15 files changed, 33 insertions, 23 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c index 8710214594d8..6214d8c0d546 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c | |||
@@ -167,7 +167,7 @@ int ipoib_open(struct net_device *dev) | |||
167 | if (flags & IFF_UP) | 167 | if (flags & IFF_UP) |
168 | continue; | 168 | continue; |
169 | 169 | ||
170 | dev_change_flags(cpriv->dev, flags | IFF_UP); | 170 | dev_change_flags(cpriv->dev, flags | IFF_UP, NULL); |
171 | } | 171 | } |
172 | up_read(&priv->vlan_rwsem); | 172 | up_read(&priv->vlan_rwsem); |
173 | } | 173 | } |
@@ -207,7 +207,7 @@ static int ipoib_stop(struct net_device *dev) | |||
207 | if (!(flags & IFF_UP)) | 207 | if (!(flags & IFF_UP)) |
208 | continue; | 208 | continue; |
209 | 209 | ||
210 | dev_change_flags(cpriv->dev, flags & ~IFF_UP); | 210 | dev_change_flags(cpriv->dev, flags & ~IFF_UP, NULL); |
211 | } | 211 | } |
212 | up_read(&priv->vlan_rwsem); | 212 | up_read(&priv->vlan_rwsem); |
213 | } | 213 | } |
@@ -1823,7 +1823,7 @@ static void ipoib_parent_unregister_pre(struct net_device *ndev) | |||
1823 | * running ensures the it will not add more work. | 1823 | * running ensures the it will not add more work. |
1824 | */ | 1824 | */ |
1825 | rtnl_lock(); | 1825 | rtnl_lock(); |
1826 | dev_change_flags(priv->dev, priv->dev->flags & ~IFF_UP); | 1826 | dev_change_flags(priv->dev, priv->dev->flags & ~IFF_UP, NULL); |
1827 | rtnl_unlock(); | 1827 | rtnl_unlock(); |
1828 | 1828 | ||
1829 | /* ipoib_event() cannot be running once this returns */ | 1829 | /* ipoib_event() cannot be running once this returns */ |
diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c index c65620adab52..18b5584d6377 100644 --- a/drivers/net/hyperv/netvsc_drv.c +++ b/drivers/net/hyperv/netvsc_drv.c | |||
@@ -1993,7 +1993,7 @@ static void __netvsc_vf_setup(struct net_device *ndev, | |||
1993 | "unable to change mtu to %u\n", ndev->mtu); | 1993 | "unable to change mtu to %u\n", ndev->mtu); |
1994 | 1994 | ||
1995 | /* set multicast etc flags on VF */ | 1995 | /* set multicast etc flags on VF */ |
1996 | dev_change_flags(vf_netdev, ndev->flags | IFF_SLAVE); | 1996 | dev_change_flags(vf_netdev, ndev->flags | IFF_SLAVE, NULL); |
1997 | 1997 | ||
1998 | /* sync address list from ndev to VF */ | 1998 | /* sync address list from ndev to VF */ |
1999 | netif_addr_lock_bh(ndev); | 1999 | netif_addr_lock_bh(ndev); |
diff --git a/drivers/net/ipvlan/ipvlan_main.c b/drivers/net/ipvlan/ipvlan_main.c index 14f1cbd3b96f..c3d3e458f541 100644 --- a/drivers/net/ipvlan/ipvlan_main.c +++ b/drivers/net/ipvlan/ipvlan_main.c | |||
@@ -85,10 +85,12 @@ static int ipvlan_set_port_mode(struct ipvl_port *port, u16 nval, | |||
85 | flags = ipvlan->dev->flags; | 85 | flags = ipvlan->dev->flags; |
86 | if (nval == IPVLAN_MODE_L3 || nval == IPVLAN_MODE_L3S) { | 86 | if (nval == IPVLAN_MODE_L3 || nval == IPVLAN_MODE_L3S) { |
87 | err = dev_change_flags(ipvlan->dev, | 87 | err = dev_change_flags(ipvlan->dev, |
88 | flags | IFF_NOARP); | 88 | flags | IFF_NOARP, |
89 | extack); | ||
89 | } else { | 90 | } else { |
90 | err = dev_change_flags(ipvlan->dev, | 91 | err = dev_change_flags(ipvlan->dev, |
91 | flags & ~IFF_NOARP); | 92 | flags & ~IFF_NOARP, |
93 | extack); | ||
92 | } | 94 | } |
93 | if (unlikely(err)) | 95 | if (unlikely(err)) |
94 | goto fail; | 96 | goto fail; |
@@ -117,9 +119,11 @@ fail: | |||
117 | flags = ipvlan->dev->flags; | 119 | flags = ipvlan->dev->flags; |
118 | if (port->mode == IPVLAN_MODE_L3 || | 120 | if (port->mode == IPVLAN_MODE_L3 || |
119 | port->mode == IPVLAN_MODE_L3S) | 121 | port->mode == IPVLAN_MODE_L3S) |
120 | dev_change_flags(ipvlan->dev, flags | IFF_NOARP); | 122 | dev_change_flags(ipvlan->dev, flags | IFF_NOARP, |
123 | NULL); | ||
121 | else | 124 | else |
122 | dev_change_flags(ipvlan->dev, flags & ~IFF_NOARP); | 125 | dev_change_flags(ipvlan->dev, flags & ~IFF_NOARP, |
126 | NULL); | ||
123 | } | 127 | } |
124 | 128 | ||
125 | return err; | 129 | return err; |
diff --git a/drivers/net/vrf.c b/drivers/net/vrf.c index 1e9f2dc0de07..95909e262ba4 100644 --- a/drivers/net/vrf.c +++ b/drivers/net/vrf.c | |||
@@ -756,9 +756,9 @@ static void cycle_netdev(struct net_device *dev, | |||
756 | if (!netif_running(dev)) | 756 | if (!netif_running(dev)) |
757 | return; | 757 | return; |
758 | 758 | ||
759 | ret = dev_change_flags(dev, flags & ~IFF_UP); | 759 | ret = dev_change_flags(dev, flags & ~IFF_UP, extack); |
760 | if (ret >= 0) | 760 | if (ret >= 0) |
761 | ret = dev_change_flags(dev, flags); | 761 | ret = dev_change_flags(dev, flags, extack); |
762 | 762 | ||
763 | if (ret < 0) { | 763 | if (ret < 0) { |
764 | netdev_err(dev, | 764 | netdev_err(dev, |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index d79be3055f5f..18cf464450ee 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -3612,7 +3612,8 @@ int dev_ifconf(struct net *net, struct ifconf *, int); | |||
3612 | int dev_ethtool(struct net *net, struct ifreq *); | 3612 | int dev_ethtool(struct net *net, struct ifreq *); |
3613 | unsigned int dev_get_flags(const struct net_device *); | 3613 | unsigned int dev_get_flags(const struct net_device *); |
3614 | int __dev_change_flags(struct net_device *, unsigned int flags); | 3614 | int __dev_change_flags(struct net_device *, unsigned int flags); |
3615 | int dev_change_flags(struct net_device *, unsigned int); | 3615 | int dev_change_flags(struct net_device *dev, unsigned int flags, |
3616 | struct netlink_ext_ack *extack); | ||
3616 | void __dev_notify_flags(struct net_device *, unsigned int old_flags, | 3617 | void __dev_notify_flags(struct net_device *, unsigned int old_flags, |
3617 | unsigned int gchanges); | 3618 | unsigned int gchanges); |
3618 | int dev_change_name(struct net_device *, const char *); | 3619 | int dev_change_name(struct net_device *, const char *); |
diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c index aef1a977279c..dc4411165e43 100644 --- a/net/8021q/vlan.c +++ b/net/8021q/vlan.c | |||
@@ -358,6 +358,7 @@ static int __vlan_device_event(struct net_device *dev, unsigned long event) | |||
358 | static int vlan_device_event(struct notifier_block *unused, unsigned long event, | 358 | static int vlan_device_event(struct notifier_block *unused, unsigned long event, |
359 | void *ptr) | 359 | void *ptr) |
360 | { | 360 | { |
361 | struct netlink_ext_ack *extack = netdev_notifier_info_to_extack(ptr); | ||
361 | struct net_device *dev = netdev_notifier_info_to_dev(ptr); | 362 | struct net_device *dev = netdev_notifier_info_to_dev(ptr); |
362 | struct vlan_group *grp; | 363 | struct vlan_group *grp; |
363 | struct vlan_info *vlan_info; | 364 | struct vlan_info *vlan_info; |
@@ -460,7 +461,8 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event, | |||
460 | 461 | ||
461 | vlan = vlan_dev_priv(vlandev); | 462 | vlan = vlan_dev_priv(vlandev); |
462 | if (!(vlan->flags & VLAN_FLAG_LOOSE_BINDING)) | 463 | if (!(vlan->flags & VLAN_FLAG_LOOSE_BINDING)) |
463 | dev_change_flags(vlandev, flgs | IFF_UP); | 464 | dev_change_flags(vlandev, flgs | IFF_UP, |
465 | extack); | ||
464 | netif_stacked_transfer_operstate(dev, vlandev); | 466 | netif_stacked_transfer_operstate(dev, vlandev); |
465 | } | 467 | } |
466 | break; | 468 | break; |
diff --git a/net/core/dev.c b/net/core/dev.c index b801c1aafd70..8bba6f98b545 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -7595,11 +7595,13 @@ void __dev_notify_flags(struct net_device *dev, unsigned int old_flags, | |||
7595 | * dev_change_flags - change device settings | 7595 | * dev_change_flags - change device settings |
7596 | * @dev: device | 7596 | * @dev: device |
7597 | * @flags: device state flags | 7597 | * @flags: device state flags |
7598 | * @extack: netlink extended ack | ||
7598 | * | 7599 | * |
7599 | * Change settings on device based state flags. The flags are | 7600 | * Change settings on device based state flags. The flags are |
7600 | * in the userspace exported format. | 7601 | * in the userspace exported format. |
7601 | */ | 7602 | */ |
7602 | int dev_change_flags(struct net_device *dev, unsigned int flags) | 7603 | int dev_change_flags(struct net_device *dev, unsigned int flags, |
7604 | struct netlink_ext_ack *extack) | ||
7603 | { | 7605 | { |
7604 | int ret; | 7606 | int ret; |
7605 | unsigned int changes, old_flags = dev->flags, old_gflags = dev->gflags; | 7607 | unsigned int changes, old_flags = dev->flags, old_gflags = dev->gflags; |
diff --git a/net/core/dev_ioctl.c b/net/core/dev_ioctl.c index 90e8aa36881e..da273ec3cc57 100644 --- a/net/core/dev_ioctl.c +++ b/net/core/dev_ioctl.c | |||
@@ -234,7 +234,7 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, unsigned int cmd) | |||
234 | 234 | ||
235 | switch (cmd) { | 235 | switch (cmd) { |
236 | case SIOCSIFFLAGS: /* Set interface flags */ | 236 | case SIOCSIFFLAGS: /* Set interface flags */ |
237 | return dev_change_flags(dev, ifr->ifr_flags); | 237 | return dev_change_flags(dev, ifr->ifr_flags, NULL); |
238 | 238 | ||
239 | case SIOCSIFMETRIC: /* Set the metric on the interface | 239 | case SIOCSIFMETRIC: /* Set the metric on the interface |
240 | (currently unused) */ | 240 | (currently unused) */ |
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c index bd67c4d0fcfd..ff9fd2bb4ce4 100644 --- a/net/core/net-sysfs.c +++ b/net/core/net-sysfs.c | |||
@@ -337,7 +337,7 @@ NETDEVICE_SHOW_RW(mtu, fmt_dec); | |||
337 | 337 | ||
338 | static int change_flags(struct net_device *dev, unsigned long new_flags) | 338 | static int change_flags(struct net_device *dev, unsigned long new_flags) |
339 | { | 339 | { |
340 | return dev_change_flags(dev, (unsigned int)new_flags); | 340 | return dev_change_flags(dev, (unsigned int)new_flags, NULL); |
341 | } | 341 | } |
342 | 342 | ||
343 | static ssize_t flags_store(struct device *dev, struct device_attribute *attr, | 343 | static ssize_t flags_store(struct device *dev, struct device_attribute *attr, |
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 98876cd1e36c..4c9e4e187600 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c | |||
@@ -2489,7 +2489,8 @@ static int do_setlink(const struct sk_buff *skb, | |||
2489 | } | 2489 | } |
2490 | 2490 | ||
2491 | if (ifm->ifi_flags || ifm->ifi_change) { | 2491 | if (ifm->ifi_flags || ifm->ifi_change) { |
2492 | err = dev_change_flags(dev, rtnl_dev_combine_flags(dev, ifm)); | 2492 | err = dev_change_flags(dev, rtnl_dev_combine_flags(dev, ifm), |
2493 | extack); | ||
2493 | if (err < 0) | 2494 | if (err < 0) |
2494 | goto errout; | 2495 | goto errout; |
2495 | } | 2496 | } |
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c index a34602ae27de..5b9b6d497f71 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c | |||
@@ -1100,7 +1100,7 @@ int devinet_ioctl(struct net *net, unsigned int cmd, struct ifreq *ifr) | |||
1100 | inet_del_ifa(in_dev, ifap, 1); | 1100 | inet_del_ifa(in_dev, ifap, 1); |
1101 | break; | 1101 | break; |
1102 | } | 1102 | } |
1103 | ret = dev_change_flags(dev, ifr->ifr_flags); | 1103 | ret = dev_change_flags(dev, ifr->ifr_flags, NULL); |
1104 | break; | 1104 | break; |
1105 | 1105 | ||
1106 | case SIOCSIFADDR: /* Set interface address (and family) */ | 1106 | case SIOCSIFADDR: /* Set interface address (and family) */ |
diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c index 88212615bf4c..55757764c381 100644 --- a/net/ipv4/ipconfig.c +++ b/net/ipv4/ipconfig.c | |||
@@ -220,7 +220,7 @@ static int __init ic_open_devs(void) | |||
220 | for_each_netdev(&init_net, dev) { | 220 | for_each_netdev(&init_net, dev) { |
221 | if (!(dev->flags & IFF_LOOPBACK) && !netdev_uses_dsa(dev)) | 221 | if (!(dev->flags & IFF_LOOPBACK) && !netdev_uses_dsa(dev)) |
222 | continue; | 222 | continue; |
223 | if (dev_change_flags(dev, dev->flags | IFF_UP) < 0) | 223 | if (dev_change_flags(dev, dev->flags | IFF_UP, NULL) < 0) |
224 | pr_err("IP-Config: Failed to open %s\n", dev->name); | 224 | pr_err("IP-Config: Failed to open %s\n", dev->name); |
225 | } | 225 | } |
226 | 226 | ||
@@ -238,7 +238,7 @@ static int __init ic_open_devs(void) | |||
238 | if (ic_proto_enabled && !able) | 238 | if (ic_proto_enabled && !able) |
239 | continue; | 239 | continue; |
240 | oflags = dev->flags; | 240 | oflags = dev->flags; |
241 | if (dev_change_flags(dev, oflags | IFF_UP) < 0) { | 241 | if (dev_change_flags(dev, oflags | IFF_UP, NULL) < 0) { |
242 | pr_err("IP-Config: Failed to open %s\n", | 242 | pr_err("IP-Config: Failed to open %s\n", |
243 | dev->name); | 243 | dev->name); |
244 | continue; | 244 | continue; |
@@ -315,7 +315,7 @@ static void __init ic_close_devs(void) | |||
315 | dev = d->dev; | 315 | dev = d->dev; |
316 | if (d != ic_dev && !netdev_uses_dsa(dev)) { | 316 | if (d != ic_dev && !netdev_uses_dsa(dev)) { |
317 | pr_debug("IP-Config: Downing %s\n", dev->name); | 317 | pr_debug("IP-Config: Downing %s\n", dev->name); |
318 | dev_change_flags(dev, d->flags); | 318 | dev_change_flags(dev, d->flags, NULL); |
319 | } | 319 | } |
320 | kfree(d); | 320 | kfree(d); |
321 | } | 321 | } |
diff --git a/net/openvswitch/vport-geneve.c b/net/openvswitch/vport-geneve.c index 5aaf3babfc3f..acb6077b7478 100644 --- a/net/openvswitch/vport-geneve.c +++ b/net/openvswitch/vport-geneve.c | |||
@@ -93,7 +93,7 @@ static struct vport *geneve_tnl_create(const struct vport_parms *parms) | |||
93 | return ERR_CAST(dev); | 93 | return ERR_CAST(dev); |
94 | } | 94 | } |
95 | 95 | ||
96 | err = dev_change_flags(dev, dev->flags | IFF_UP); | 96 | err = dev_change_flags(dev, dev->flags | IFF_UP, NULL); |
97 | if (err < 0) { | 97 | if (err < 0) { |
98 | rtnl_delete_link(dev); | 98 | rtnl_delete_link(dev); |
99 | rtnl_unlock(); | 99 | rtnl_unlock(); |
diff --git a/net/openvswitch/vport-gre.c b/net/openvswitch/vport-gre.c index 0e72d95b0e8f..c38a62464b85 100644 --- a/net/openvswitch/vport-gre.c +++ b/net/openvswitch/vport-gre.c | |||
@@ -68,7 +68,7 @@ static struct vport *gre_tnl_create(const struct vport_parms *parms) | |||
68 | return ERR_CAST(dev); | 68 | return ERR_CAST(dev); |
69 | } | 69 | } |
70 | 70 | ||
71 | err = dev_change_flags(dev, dev->flags | IFF_UP); | 71 | err = dev_change_flags(dev, dev->flags | IFF_UP, NULL); |
72 | if (err < 0) { | 72 | if (err < 0) { |
73 | rtnl_delete_link(dev); | 73 | rtnl_delete_link(dev); |
74 | rtnl_unlock(); | 74 | rtnl_unlock(); |
diff --git a/net/openvswitch/vport-vxlan.c b/net/openvswitch/vport-vxlan.c index 7e6301b2ec4d..8f16f11f7ad3 100644 --- a/net/openvswitch/vport-vxlan.c +++ b/net/openvswitch/vport-vxlan.c | |||
@@ -131,7 +131,7 @@ static struct vport *vxlan_tnl_create(const struct vport_parms *parms) | |||
131 | return ERR_CAST(dev); | 131 | return ERR_CAST(dev); |
132 | } | 132 | } |
133 | 133 | ||
134 | err = dev_change_flags(dev, dev->flags | IFF_UP); | 134 | err = dev_change_flags(dev, dev->flags | IFF_UP, NULL); |
135 | if (err < 0) { | 135 | if (err < 0) { |
136 | rtnl_delete_link(dev); | 136 | rtnl_delete_link(dev); |
137 | rtnl_unlock(); | 137 | rtnl_unlock(); |