mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-10 12:57:06 +09:00
team: don't traverse port list using rcu in team_set_mac_address
[ Upstream commit9215f437b8] Currently the list is traversed using rcu variant. That is not correct since dev_set_mac_address can be called which eventually calls rtmsg_ifinfo_build_skb and there, skb allocation can sleep. So fix this by remove the rcu usage here. Fixes:3d249d4ca7"net: introduce ethernet teaming device" Signed-off-by: Jiri Pirko <jiri@resnulli.us> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
6b31300858
commit
fc46dcb4a9
@@ -1521,11 +1521,11 @@ static int team_set_mac_address(struct net_device *dev, void *p)
|
||||
if (dev->type == ARPHRD_ETHER && !is_valid_ether_addr(addr->sa_data))
|
||||
return -EADDRNOTAVAIL;
|
||||
memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
|
||||
rcu_read_lock();
|
||||
list_for_each_entry_rcu(port, &team->port_list, list)
|
||||
mutex_lock(&team->lock);
|
||||
list_for_each_entry(port, &team->port_list, list)
|
||||
if (team->ops.port_change_dev_addr)
|
||||
team->ops.port_change_dev_addr(team, port);
|
||||
rcu_read_unlock();
|
||||
mutex_unlock(&team->lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user