Skip to content

Commit

Permalink
macvlan: Check return of dev_set_allmulti
Browse files Browse the repository at this point in the history
allmulti might overflow.
Commit: "netdevice: Fix promiscuity and allmulti overflow" in net-next makes
dev_set_promiscuity/allmulti return error number if overflow happened.

Here, we check the positive increment for allmulti to get error return.

Signed-off-by: Wang Chen <wangchen@cn.fujitsu.com>
Acked-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Wang Chen authored and David S. Miller committed Jul 15, 2008
1 parent 7dc00c8 commit b89fb7d
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions drivers/net/macvlan.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit b89fb7d

Please sign in to comment.