Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp2931958ybk; Mon, 18 May 2020 11:24:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw2vOt8ZNpnoDl+3gxoKGR1oOrNr0ElGVmAwFPZBy4PwPOPA+wjtHGeNkcQpIXoCwYStYpo X-Received: by 2002:a17:906:e293:: with SMTP id gg19mr15602965ejb.295.1589826279723; Mon, 18 May 2020 11:24:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589826279; cv=none; d=google.com; s=arc-20160816; b=tTczQmspZh8gSgR2hK4Gas5k28pCYPuDwkk9c52A+vNxwO2NIW9ErIApqZBRRcGeJK GQ7IIDR9TJTeZjtmqYjrf0Qrd/JmFwTN07bfJrOyrjY35MTyVo6P0ElXBnpqNouOHwoM tvE2RTtu1zSRQEX+BhmEGFjpWOwaPa3LEWlO3E2KOt6kTgvj8AUSo1Kf6CpE3WwoYpDo qa4Z2snMmXEWEIECNzNzgQ2NP1MfB2Y2YcqXlyLNmAVKp83YY3S6iMwguoCj78TgNLcm 2yGJreXtDHX20zY6X8E30q1ohMZi7twfmdW+Py057DVcZQdWPv+Y5bGExOZwLOQyGYZN 8B0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=27noQfez6Ikz7qQhbcFx9kH7Dyw+DlyfRxref0EdQc4=; b=LjIqcKpTCIMI3yzJXgVw83A2UHjfb420pklPkC2JVRH4H5fbOipT7F30T9zFwC7iQ2 0QGHYir/qRO2fUHpDqcRFcbEYNHr+8WqJGY62eBHH1q2j2JBXQ5b8hrV2UKYm+2CbuYN Nhxa+6acSemC/yrdzarD6x8YVYUBBb0DBGf91svHdXvPHc1ROxX4No66anExKvfln+Gw jj8qymcaBFWgHlwkT6xuOVGZabRMJyDKTZmnonpc76+0FH578IeyFSr0xVZezYN8gXFu Hv7rWSmAaWGxerAAXIcK02WymJl7Rlwb3mHyEJZByfuFh6tWT7zsC6CHV2aPnZWyiCRa zTHw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=BV2R2bLy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t21si1089651edc.101.2020.05.18.11.24.16; Mon, 18 May 2020 11:24:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=BV2R2bLy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730863AbgERRv2 (ORCPT + 99 others); Mon, 18 May 2020 13:51:28 -0400 Received: from mail.kernel.org ([198.145.29.99]:54038 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730330AbgERRvX (ORCPT ); Mon, 18 May 2020 13:51:23 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C1EE320674; Mon, 18 May 2020 17:51:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589824282; bh=JLWxNKeoW+Xt08Zdz0NK/R0f/qbmQqADXwS63pO5RSY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BV2R2bLytS67bL2chRm9w/6iJsSMwHHqZyHI25sF0Xm3c6fGQXov6c9kU3YNBjPT/ OXBFChb7VUPzHx6QFZar7a8FK5Fk6UONDPfT18dG+1opVYuX6ULi8RKI2XLv/3R44Q Xco6wq+59SizlbWGCC8TuMWtdDQdysaEhk3Lr6o8= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, syzbot+e73ceacfd8560cc8a3ca@syzkaller.appspotmail.com, syzbot+c2fb6f9ddcea95ba49b5@syzkaller.appspotmail.com, Jarod Wilson , Nikolay Aleksandrov , Josh Poimboeuf , Jann Horn , Jay Vosburgh , Cong Wang , "David S. Miller" Subject: [PATCH 4.19 09/80] net: fix a potential recursive NETDEV_FEAT_CHANGE Date: Mon, 18 May 2020 19:36:27 +0200 Message-Id: <20200518173452.081921019@linuxfoundation.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200518173450.097837707@linuxfoundation.org> References: <20200518173450.097837707@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Cong Wang [ Upstream commit dd912306ff008891c82cd9f63e8181e47a9cb2fb ] syzbot managed to trigger a recursive NETDEV_FEAT_CHANGE event between bonding master and slave. I managed to find a reproducer for this: ip li set bond0 up ifenslave bond0 eth0 brctl addbr br0 ethtool -K eth0 lro off brctl addif br0 bond0 ip li set br0 up When a NETDEV_FEAT_CHANGE event is triggered on a bonding slave, it captures this and calls bond_compute_features() to fixup its master's and other slaves' features. However, when syncing with its lower devices by netdev_sync_lower_features() this event is triggered again on slaves when the LRO feature fails to change, so it goes back and forth recursively until the kernel stack is exhausted. Commit 17b85d29e82c intentionally lets __netdev_update_features() return -1 for such a failure case, so we have to just rely on the existing check inside netdev_sync_lower_features() and skip NETDEV_FEAT_CHANGE event only for this specific failure case. Fixes: fd867d51f889 ("net/core: generic support for disabling netdev features down stack") Reported-by: syzbot+e73ceacfd8560cc8a3ca@syzkaller.appspotmail.com Reported-by: syzbot+c2fb6f9ddcea95ba49b5@syzkaller.appspotmail.com Cc: Jarod Wilson Cc: Nikolay Aleksandrov Cc: Josh Poimboeuf Cc: Jann Horn Reviewed-by: Jay Vosburgh Signed-off-by: Cong Wang Acked-by: Nikolay Aleksandrov Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- net/core/dev.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) --- a/net/core/dev.c +++ b/net/core/dev.c @@ -8259,11 +8259,13 @@ static void netdev_sync_lower_features(s netdev_dbg(upper, "Disabling feature %pNF on lower dev %s.\n", &feature, lower->name); lower->wanted_features &= ~feature; - netdev_update_features(lower); + __netdev_update_features(lower); if (unlikely(lower->features & feature)) netdev_WARN(upper, "failed to disable %pNF on %s!\n", &feature, lower->name); + else + netdev_features_change(lower); } } }