diff options
author | Gao Feng <fgao@ikuai8.com> | 2016-11-21 20:54:36 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-11-23 20:18:36 -0500 |
commit | c3891fa2543cbab26093f5e425b8a50cd6837f16 (patch) | |
tree | 17764f348b48b64d692b8ada70d274ed85c72b8c | |
parent | ffa54a238c69184414a8f3dc35a18aed875290e7 (diff) |
driver: macvlan: Check if need rollback multicast setting in macvlan_open
When dev_set_promiscuity failed in macvlan_open, it always invokes
dev_set_allmulti without checking if necessary.
Now check the IFF_ALLMULTI flag firstly before rollback the multicast
setting in the error handler.
Signed-off-by: Gao Feng <fgao@ikuai8.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/macvlan.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c index d2d6f12a112f..26d6f0bbe14b 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c | |||
@@ -623,7 +623,8 @@ hash_add: | |||
623 | return 0; | 623 | return 0; |
624 | 624 | ||
625 | clear_multi: | 625 | clear_multi: |
626 | dev_set_allmulti(lowerdev, -1); | 626 | if (dev->flags & IFF_ALLMULTI) |
627 | dev_set_allmulti(lowerdev, -1); | ||
627 | del_unicast: | 628 | del_unicast: |
628 | dev_uc_del(lowerdev, dev->dev_addr); | 629 | dev_uc_del(lowerdev, dev->dev_addr); |
629 | out: | 630 | out: |