Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b89fb7da authored by Wang Chen's avatar Wang Chen Committed by David S. Miller
Browse files

macvlan: Check return of dev_set_allmulti



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: default avatarWang Chen <wangchen@cn.fujitsu.com>
Acked-by: default avatarPatrick McHardy <kaber@trash.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7dc00c82
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -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)