Received: by 10.192.165.156 with SMTP id m28csp1150838imm; Wed, 11 Apr 2018 13:24:00 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/vYSf9v1Hd7272ImtgHTIWaRK0WT3vm6wznci4hOSUeEVNMm636UHW0KiwpkZTvMrETUTW X-Received: by 2002:a17:902:b40d:: with SMTP id x13-v6mr6669316plr.167.1523478240671; Wed, 11 Apr 2018 13:24:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523478240; cv=none; d=google.com; s=arc-20160816; b=Zxzd90luCzfoBndFBmLs4/ekRBCfSZyzJBgrU+O/fV1sPKsu/RumlSrITDOH/7hnKB otlu5xqV5ZWtwLk5J8i4ixrXZBa/80+lIuIYRvTNIY6wCHCYiFCSgzXs3vsqb/lBEPzp 2uFd1AJJIeuTIGg4d4INmtSMJhr+mWoZLwZazOtQ7F4ARDcu6R3ZpJViQ62XvKF/cUT2 L1TmTarVZ+oCPNhpK12Vukt+3CNFesC0aJYqcrVz9k26e6Je9rfiyYnqXaSSB/KaUYYM 5H2409ThTZjeWuVrh6SiqdEYC7bxdgkuyPqs/HoDUAnL7/Q1xXVkjNDNEculPd0AYBLn Y8EA== 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=v4QoTR7jUNBoCSlmNJ0xARUnu4vblsZ/x9LXDjqoZrg=; b=EuW0Hou+TnAXOqphtYImyg1+CnMeD/TrBjkI0QaGwcw+BHEEY0rwcRrx9ZGEupXstt /OocPHVQjmEBePwD9ejaGmuuReD7MPQNGB32ZxxHdB+V5G8PQKWCDEGjw79ZMHxpZhUU 2t6IIPFYtdhDw0BzRiW13xBb59uXdPzhFa4wBNR6fizK85hR0/wlZ+cq4tXBDgln6AOG ycpqpp3V15S9JfkIC2cxTliWRtkaGO+xf4pCgrVJoFAuv2vHESFO7bMru/AamkNs3inG 82TjiM3QrGGWFfb70hT3I2n9A4ZKfDND9eA5m12x0Bsih1wFcX9yjXPxwkANQlXXec+b VVmA== 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 o5-v6si1750151pll.269.2018.04.11.13.23.23; Wed, 11 Apr 2018 13:24:00 -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 S933080AbeDKSw2 (ORCPT + 99 others); Wed, 11 Apr 2018 14:52:28 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:33400 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933066AbeDKSw0 (ORCPT ); Wed, 11 Apr 2018 14:52:26 -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 D7165E8A; Wed, 11 Apr 2018 18:52:25 +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.4 177/190] bonding: fix the err path for dev hwaddr sync in bond_enslave Date: Wed, 11 Apr 2018 20:37:03 +0200 Message-Id: <20180411183603.459911790@linuxfoundation.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180411183550.114495991@linuxfoundation.org> References: <20180411183550.114495991@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.4-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 @@ -1527,7 +1527,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); @@ -1709,9 +1709,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); @@ -1725,6 +1722,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);