Received: by 10.192.165.156 with SMTP id m28csp1089054imm; Wed, 11 Apr 2018 12:11:51 -0700 (PDT) X-Google-Smtp-Source: AIpwx494aonzIGLRoua8hxbyuJW0Ns8iYw95xwYnkIPkh9BitCkkJmm1uns7Am9gmkDEwPxUZFc2 X-Received: by 2002:a17:902:20ca:: with SMTP id v10-v6mr6487910plg.9.1523473911342; Wed, 11 Apr 2018 12:11:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523473911; cv=none; d=google.com; s=arc-20160816; b=kCVO9JmMEB68px7mKhQ/xVWQzqkpv/3QEZt0Tnm75FsHFqgwhlYpIqSNBt6JsXuDDi qjGksuCr7lntLJ26y16So65Mu4xLV9+IFZuuTPbtbebSldS7rad9+HtOK48DWc9JMzel qCXjJwZQ4oiKBeDJ8zrkypwPL1B3pDqeUwpM4wrBeUNTQm7xNmHUCwVQlD0toJNW68oE Iw80wFvK7Cfpy8kg5tfApEYB9OsS3zMQ4aa2Dnp85kASFvceaES7TlROEVLWPjkufDrp KYXar4r6EZWofv1XU7jiYiCmF0JfnpobuHy9omQjfds4b3nNCR8DpfGu5G4O9y7F5L7w 0A2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=CIj/qxwq+qgjMwR/lP1mbJBMJLO49cmiMvhO/Iw//rY=; b=sxKHmlV1Clyuv0mBisa5tdUhjPb9N5J89/1TF363Zn65GDCIUzD+t/r5ZA6z7f6C/m wbkw4Jn2gJGoG1LglNOUha/FSLWYvtoSW/2n/47C+sUpEbf9PxFJTPC9aqiEpfiLGudo vAL5I77Oqmc82lt6EJfgz+tPvp/NZ2tpKFKhMKfK9MOP3aWeJ6KDJ4vaIJurxkJ2nZNV hUM6kKbCf/CsCOA9ovNPeskm9lXDmr/31fbEU4PENkE6zxshVuwD0ZZOJIgguBq9fQV0 jppPOeD/7kKIwf/zW+SlOxOXatMLoy7TPsyULZwTpWXjgS5VhIg2k1EeyURpIYTdqDW7 oiPQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t137si1108663pgb.288.2018.04.11.12.11.14; Wed, 11 Apr 2018 12:11:51 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935384AbeDKTHL (ORCPT + 99 others); Wed, 11 Apr 2018 15:07:11 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:41016 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935324AbeDKTHD (ORCPT ); Wed, 11 Apr 2018 15:07:03 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 20301D8B; Wed, 11 Apr 2018 19:07:02 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Xin Long , Nikolay Aleksandrov , Andy Gospodarek , "David S. Miller" Subject: [PATCH 4.9 290/310] bonding: fix the err path for dev hwaddr sync in bond_enslave Date: Wed, 11 Apr 2018 20:37:09 +0200 Message-Id: <20180411183635.078576406@linuxfoundation.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180411183622.305902791@linuxfoundation.org> References: <20180411183622.305902791@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.9-stable review patch. If anyone has any objections, please let me know. ------------------ From: Xin Long [ Upstream commit 5c78f6bfae2b10ff70e21d343e64584ea6280c26 ] vlan_vids_add_by_dev is called right after dev hwaddr sync, so on the err path it should unsync dev hwaddr. Otherwise, the slave dev's hwaddr will never be unsync when this err happens. Fixes: 1ff412ad7714 ("bonding: change the bond's vlan syncing functions with the standard ones") Signed-off-by: Xin Long Reviewed-by: Nikolay Aleksandrov Acked-by: Andy Gospodarek Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/net/bonding/bond_main.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -1561,7 +1561,7 @@ int bond_enslave(struct net_device *bond if (res) { netdev_err(bond_dev, "Couldn't add bond vlan ids to %s\n", slave_dev->name); - goto err_close; + goto err_hwaddr_unsync; } prev_slave = bond_last_slave(bond); @@ -1749,9 +1749,6 @@ err_unregister: netdev_rx_handler_unregister(slave_dev); err_detach: - if (!bond_uses_primary(bond)) - bond_hw_addr_flush(bond_dev, slave_dev); - vlan_vids_del_by_dev(slave_dev, bond_dev); if (rcu_access_pointer(bond->primary_slave) == new_slave) RCU_INIT_POINTER(bond->primary_slave, NULL); @@ -1765,6 +1762,10 @@ err_detach: synchronize_rcu(); slave_disable_netpoll(new_slave); +err_hwaddr_unsync: + if (!bond_uses_primary(bond)) + bond_hw_addr_flush(bond_dev, slave_dev); + err_close: slave_dev->priv_flags &= ~IFF_BONDING; dev_close(slave_dev);