lkml.org 
[lkml]   [2018]   [Apr]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 305/310] team: move dev_mc_sync after master_upper_dev_link in team_port_add
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Xin Long <lucien.xin@gmail.com>


    [ Upstream commit 982cf3b3999d39a2eaca0a65542df33c19b5d814 ]

    The same fix as in 'bonding: move dev_mc_sync after master_upper_dev_link
    in bond_enslave' is needed for team driver.

    The panic can be reproduced easily:

    ip link add team1 type team
    ip link set team1 up
    ip link add link team1 vlan1 type vlan id 80
    ip link set vlan1 master team1

    Fixes: cb41c997d444 ("team: team should sync the port's uc/mc addrs when add a port")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/net/team/team.c | 12 +++++-------
    1 file changed, 5 insertions(+), 7 deletions(-)

    --- a/drivers/net/team/team.c
    +++ b/drivers/net/team/team.c
    @@ -1203,11 +1203,6 @@ static int team_port_add(struct team *te
    goto err_dev_open;
    }

    - netif_addr_lock_bh(dev);
    - dev_uc_sync_multiple(port_dev, dev);
    - dev_mc_sync_multiple(port_dev, dev);
    - netif_addr_unlock_bh(dev);
    -
    err = vlan_vids_add_by_dev(port_dev, dev);
    if (err) {
    netdev_err(dev, "Failed to add vlan ids to device %s\n",
    @@ -1247,6 +1242,11 @@ static int team_port_add(struct team *te
    goto err_option_port_add;
    }

    + netif_addr_lock_bh(dev);
    + dev_uc_sync_multiple(port_dev, dev);
    + dev_mc_sync_multiple(port_dev, dev);
    + netif_addr_unlock_bh(dev);
    +
    port->index = -1;
    list_add_tail_rcu(&port->list, &team->port_list);
    team_port_enable(team, port);
    @@ -1271,8 +1271,6 @@ err_enable_netpoll:
    vlan_vids_del_by_dev(port_dev, dev);

    err_vids_add:
    - dev_uc_unsync(port_dev, dev);
    - dev_mc_unsync(port_dev, dev);
    dev_close(port_dev);

    err_dev_open:

    \
     
     \ /
      Last update: 2018-04-11 21:10    [W:4.068 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site