Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp2466314yba; Mon, 15 Apr 2019 12:13:53 -0700 (PDT) X-Google-Smtp-Source: APXvYqwnFrZbvI3/mTx/cWiTsO7ZSNlJc+sYvzsmJpU8STe750rslILTONUH9zGuawH7Ubqjbn+q X-Received: by 2002:a17:902:a9c7:: with SMTP id b7mr74051317plr.145.1555355633822; Mon, 15 Apr 2019 12:13:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555355633; cv=none; d=google.com; s=arc-20160816; b=n1Azpbg12gvidKBKQNKcnl62NCQv8KhEysXTGYWbpAsQnnqEI4yNLWdxa9ormGf49C VE+4JyNHiWkj5dOy4NMMBAi6JRxco+yeloKGPOYqwcit33x9+ORa+WlouGvFbYaIZyDO 8moFmjaM0CV8Mb2kf8pH3/tE1c2Dxtvv2oQhIlAi8Xrzl+0G3/1RSlYNYza/CP7lcGn4 ru70ay0gK85IU+0N/W7Q4QlqHv+/+ThdWERygW5goU8Y7OqTH/p+/+uOgsvr1/6yXVuf H3/3N44QRoAbfWE/7x+Sdv++WRtqVTMHwiblEQCFHOQR3MLZ5sRljyNeVCeD77HnpCM1 YMSg== 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=yPwVJF8R39JzrGlnyto3NcaHw86+0kysAuvslWfmSL0=; b=ITS+Jz5QfTAD5gHT3B09khsY+0gAH4HeoBcSfzrbKC6FF0jwF75PmDr0L5BP2DzqTa 8U9eFUc/YCnH8i8pb2mSwYs4gyvneRIDZKudYPBeihbLX6/1K3pCs5+imLphfgGUpNlT 68q0DnTkK2N3bYywpg6FXZHZrWQXmdh7v5D2xQx31NxTLpRNbJTf6T77BPV//nGDBqG6 XCNaGvfvPbHROtIl21hYlSYsbCMKU/OCpI0+3J/zgZ5qT2Wt3F4b4xFttCnmSWw5/G4A 80M9n6LtcsueMgROKkX3DcrDowgNS2j7kdZRWFiR9nZzG5Y+o8NnNzHNqtZ7maWU29TA nSgA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=AEznW6rj; 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 u69si16602186pgd.176.2019.04.15.12.13.37; Mon, 15 Apr 2019 12:13:53 -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; dkim=pass header.i=@kernel.org header.s=default header.b=AEznW6rj; 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 S1731154AbfDOTLF (ORCPT + 99 others); Mon, 15 Apr 2019 15:11:05 -0400 Received: from mail.kernel.org ([198.145.29.99]:47802 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731147AbfDOTLC (ORCPT ); Mon, 15 Apr 2019 15:11:02 -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 7E384218A1; Mon, 15 Apr 2019 19:11:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1555355462; bh=tT6UrmnX7B2aB3BfZl7ICn98fI2BjaJsD+80LTzYmes=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AEznW6rj51gINKkaJAwHRjTYFqooSpyPkkc845q+TkJty7TfVg/dCWpp0pSjyaOWN ubeTzdFOSZY6gkq1FO7TH5lx2ASQoIeoJShaWQ10GgT+mjMi2khOFwTrLOAlYxL6Ro rdCBy4n+OmkrxKpj52mu1+QOHDdnhBwr8ZAkGjkA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Michael Chan , "David S. Miller" , Sasha Levin Subject: [PATCH 5.0 030/117] bnxt_en: Improve RX consumer index validity check. Date: Mon, 15 Apr 2019 21:00:00 +0200 Message-Id: <20190415183746.444527302@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190415183744.887851196@linuxfoundation.org> References: <20190415183744.887851196@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 [ Upstream commit a1b0e4e684e9c300b9e759b46cb7a0147e61ddff ] There is logic to check that the RX/TPA consumer index is the expected index to work around a hardware problem. However, the potentially bad consumer index is first used to index into an array to reference an entry. This can potentially crash if the bad consumer index is beyond legal range. Improve the logic to use the consumer index for dereferencing after the validity check and log an error message. Fixes: fa7e28127a5a ("bnxt_en: Add workaround to detect bad opaque in rx completion (part 2)") Signed-off-by: Michael Chan Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 803f7990d32b..351417e74ae2 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -1129,6 +1129,8 @@ static void bnxt_tpa_start(struct bnxt *bp, struct bnxt_rx_ring_info *rxr, tpa_info = &rxr->rx_tpa[agg_id]; if (unlikely(cons != rxr->rx_next_cons)) { + netdev_warn(bp->dev, "TPA cons %x != expected cons %x\n", + cons, rxr->rx_next_cons); bnxt_sched_reset(bp, rxr); return; } @@ -1581,15 +1583,17 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr, } cons = rxcmp->rx_cmp_opaque; - rx_buf = &rxr->rx_buf_ring[cons]; - data = rx_buf->data; - data_ptr = rx_buf->data_ptr; if (unlikely(cons != rxr->rx_next_cons)) { int rc1 = bnxt_discard_rx(bp, cpr, raw_cons, rxcmp); + netdev_warn(bp->dev, "RX cons %x != expected cons %x\n", + cons, rxr->rx_next_cons); bnxt_sched_reset(bp, rxr); return rc1; } + rx_buf = &rxr->rx_buf_ring[cons]; + data = rx_buf->data; + data_ptr = rx_buf->data_ptr; prefetch(data_ptr); misc = le32_to_cpu(rxcmp->rx_cmp_misc_v1); -- 2.19.1