Commit 7c355f53 authored by Thomas Graf's avatar Thomas Graf Committed by David S. Miller

[NET]: Avoid duplicate netlink notification when changing link state

When changing the link state from userspace not affecting any other
flags. Two duplicate notification are being sent, once as action
in the NETDEV_UP/NETDEV_DOWN notification chain and a second time
when comparing old and new device flags after the change has been
completed. Although harmless, the duplicates should be avoided.
Signed-off-by: default avatarThomas Graf <tgraf@suug.ch>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent df2bc459
...@@ -2577,7 +2577,7 @@ unsigned dev_get_flags(const struct net_device *dev) ...@@ -2577,7 +2577,7 @@ unsigned dev_get_flags(const struct net_device *dev)
int dev_change_flags(struct net_device *dev, unsigned flags) int dev_change_flags(struct net_device *dev, unsigned flags)
{ {
int ret; int ret, changes;
int old_flags = dev->flags; int old_flags = dev->flags;
/* /*
...@@ -2632,8 +2632,10 @@ int dev_change_flags(struct net_device *dev, unsigned flags) ...@@ -2632,8 +2632,10 @@ int dev_change_flags(struct net_device *dev, unsigned flags)
dev_set_allmulti(dev, inc); dev_set_allmulti(dev, inc);
} }
if (old_flags ^ dev->flags) /* Exclude state transition flags, already notified */
rtmsg_ifinfo(RTM_NEWLINK, dev, old_flags ^ dev->flags); changes = (old_flags ^ dev->flags) & ~(IFF_UP | IFF_RUNNING);
if (changes)
rtmsg_ifinfo(RTM_NEWLINK, dev, changes);
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment