MFC r282817:

Apply proper locking when iterating the multicast addresses and add a
missing check for NULL from a non-blocking "kzalloc()" function call.

Sponsored by:	Mellanox Technologies
This commit is contained in:
Hans Petter Selasky 2015-05-21 06:56:35 +00:00
parent b0faa45a9f
commit 9cab464054
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/stable/10/; revision=283175

View File

@ -650,6 +650,7 @@ static void mlx4_en_cache_mclist(struct net_device *dev)
struct mlx4_en_mc_list *tmp;
struct mlx4_en_priv *priv = netdev_priv(dev);
if_maddr_rlock(dev);
TAILQ_FOREACH(ifma, &dev->if_multiaddrs, ifma_link) {
if (ifma->ifma_addr->sa_family != AF_LINK)
continue;
@ -658,10 +659,13 @@ static void mlx4_en_cache_mclist(struct net_device *dev)
continue;
/* Make sure the list didn't grow. */
tmp = kzalloc(sizeof(struct mlx4_en_mc_list), GFP_ATOMIC);
if (tmp == NULL)
break;
memcpy(tmp->addr,
LLADDR((struct sockaddr_dl *)ifma->ifma_addr), ETH_ALEN);
list_add_tail(&tmp->list, &priv->mc_list);
}
if_maddr_runlock(dev);
}
static void update_mclist_flags(struct mlx4_en_priv *priv,