From 48c3334318c56e56c3e49031f6041bf554927791 Mon Sep 17 00:00:00 2001 From: Jiri Benc Date: Fri, 27 Jul 2012 02:58:22 +0000 Subject: [PATCH] --- yaml --- r: 319123 b: refs/heads/master c: b1beb681cba5358f62e6187340660ade226a5fcc h: refs/heads/master i: 319121: d50e15aa0bdfebf70f796f54f8efebd6950f668c 319119: 5f883d012952b545d41feafcd47bb9c068bdf287 v: v3 --- [refs] | 2 +- trunk/net/core/rtnetlink.c | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index fe0d0064a5d3..11d59c49d5a4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e4c7f259c5be99dcfc3d98f913590663b0305bf8 +refs/heads/master: b1beb681cba5358f62e6187340660ade226a5fcc diff --git a/trunk/net/core/rtnetlink.c b/trunk/net/core/rtnetlink.c index 334b930e0de3..bc9e380f0abf 100644 --- a/trunk/net/core/rtnetlink.c +++ b/trunk/net/core/rtnetlink.c @@ -659,6 +659,12 @@ static void set_operstate(struct net_device *dev, unsigned char transition) } } +static unsigned int rtnl_dev_get_flags(const struct net_device *dev) +{ + return (dev->flags & ~(IFF_PROMISC | IFF_ALLMULTI)) | + (dev->gflags & (IFF_PROMISC | IFF_ALLMULTI)); +} + static unsigned int rtnl_dev_combine_flags(const struct net_device *dev, const struct ifinfomsg *ifm) { @@ -667,7 +673,7 @@ static unsigned int rtnl_dev_combine_flags(const struct net_device *dev, /* bugwards compatibility: ifi_change == 0 is treated as ~0 */ if (ifm->ifi_change) flags = (flags & ifm->ifi_change) | - (dev->flags & ~ifm->ifi_change); + (rtnl_dev_get_flags(dev) & ~ifm->ifi_change); return flags; }