From 1e1b1a0f9469f1a05285d396d24b7ff7d1b61885 Mon Sep 17 00:00:00 2001 From: Wang Chen Date: Mon, 14 Jul 2008 20:57:07 -0700 Subject: [PATCH] --- yaml --- r: 103455 b: refs/heads/master c: b89fb7da2f9a69dd34ff10d45f66baa40ff8c0e5 h: refs/heads/master i: 103453: b10bc47acdf090dbb908079c9185c958ab8623a8 103451: 47b66e0dcd156fa47958e38aa90fed88458f4e2f 103447: 8fb7cc2f9ec88f34716cbd18b7d7d2e92b5d4e77 103439: 15cd2a638d13b9e7a99d528b56e22266d0171ab9 103423: 088dc7586fbfbea8d144e0fec084998e251b670f v: v3 --- [refs] | 2 +- trunk/drivers/net/macvlan.c | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index e4cbd8fa8caf..be018139b9b9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7dc00c82cbb0119cf4663f65bbaa2cc55f961db2 +refs/heads/master: b89fb7da2f9a69dd34ff10d45f66baa40ff8c0e5 diff --git a/trunk/drivers/net/macvlan.c b/trunk/drivers/net/macvlan.c index c02ceaa4a216..980001c2cf96 100644 --- a/trunk/drivers/net/macvlan.c +++ b/trunk/drivers/net/macvlan.c @@ -189,12 +189,20 @@ static int macvlan_open(struct net_device *dev) err = dev_unicast_add(lowerdev, dev->dev_addr, ETH_ALEN); if (err < 0) - return err; - if (dev->flags & IFF_ALLMULTI) - dev_set_allmulti(lowerdev, 1); + goto out; + if (dev->flags & IFF_ALLMULTI) { + err = dev_set_allmulti(lowerdev, 1); + if (err < 0) + goto del_unicast; + } hlist_add_head_rcu(&vlan->hlist, &port->vlan_hash[dev->dev_addr[5]]); return 0; + +del_unicast: + dev_unicast_delete(lowerdev, dev->dev_addr, ETH_ALEN); +out: + return err; } static int macvlan_stop(struct net_device *dev)