Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp805595pxb; Tue, 12 Apr 2022 13:58:50 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyoA8q4xGp8d09/ssstla5sFlPXEfWV1pbOOmFFi2VkjH6IdDchQAF1DHBlNR9WiffHRBUg X-Received: by 2002:a17:90b:3903:b0:1cc:57a4:e8fd with SMTP id ob3-20020a17090b390300b001cc57a4e8fdmr5381816pjb.61.1649797130398; Tue, 12 Apr 2022 13:58:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649797130; cv=none; d=google.com; s=arc-20160816; b=J3FGWEl+mDfBdlAAGjPeEcanx32HS7M4o9nlPMV7wTi6yUWanql+8GcBaQppDY0AsK JXB/5UrDhGccF6UoWZWrub7MOVkDq1wOe0FWKuadgGLgV4DOV8ILd1tm2TW9GsK06Thy DS/ZVxWcSSJnUmQUUlF0GpcGjIkGkClYhe7NN+rg34pQVylkeozysv7gnrfrar6NAaPj 99Ki2GW5NUwOhTe6aKUKmv11jQ9D54+rNuUH3SMLxLQ0OjJ22DEuPm8Fzx1O+cFlQ8BY X5702q9qTkIfR89rul+H9mGJGdyDJh2BtHGc3drJt/ExJ9GW2fkNf0KCmeMfc8GTMbRd b/jA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=mkUk+waVd+qs7ioaE4px5sX/3Pj2IG2oiabDPG8Gois=; b=fUoKi/gIBYbYyn2PT541OXqRUYSdu5OVhs9eFZV62lA4nCWFDsMUVcwZv/GlrKPVAX BJrtULq8GPxfhEDEccniE9h7csJ1O6BE2z7QHjYq0csfSVfCGJbZMzn2dNvH89dFnglt 9UOuR5StfKcabSxefSMRJIopA2oEgY7MldTwBndotosa+BWfQpqzO8E7ZR3daTMgWviv xsMA5swC3k1oV8yUCD737RdbRKL9Z4ool2gIPeeT+cZEs9p8LmZ8AtfcnKE1C7W5dGlf E46x9MWD9G3z67lUaXJ5C1z1Ii29gvEg+LktUe+VBzw+GbGt9jnh1nrM3H0upsWfHvDu wvcA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=uNjTECMQ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id n185-20020a6340c2000000b003822873c27dsi3859281pga.572.2022.04.12.13.58.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Apr 2022 13:58:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=uNjTECMQ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from out1.vger.email (out1.vger.email [IPv6:2620:137:e000::1:20]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 40582CD64B; Tue, 12 Apr 2022 13:21:48 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347734AbiDLH7x (ORCPT + 99 others); Tue, 12 Apr 2022 03:59:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42846 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1353589AbiDLHZr (ORCPT ); Tue, 12 Apr 2022 03:25:47 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5368D2611F; Tue, 12 Apr 2022 00:02:01 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 0E1D6B81B4D; Tue, 12 Apr 2022 07:02:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 574E2C385A1; Tue, 12 Apr 2022 07:01:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649746918; bh=2iUMAivM5OcC/XYFeQNoON5q/FeRFZMAPLQB86xdYuA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uNjTECMQgRTsNFwpEYWozvy2A8VQhOxfzXttCFTVdxrlkMLbPAWOjJw46G/8OsSDQ 5wYmtFT8BzxAzdyYJSnkHiFRLwBiShuJV6TnikGwBMqEGEr6TIR+ZyKSl2XfqQFytY buO0EYtIuSCUplTPAdrthRSOsj3xeDwcMzPPkyAY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Vladimir Olovyannikov , Ray Jui , Michael Chan , "David S. Miller" , Sasha Levin Subject: [PATCH 5.16 177/285] bnxt_en: Prevent XDP redirect from running when stopping TX queue Date: Tue, 12 Apr 2022 08:30:34 +0200 Message-Id: <20220412062948.776369767@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220412062943.670770901@linuxfoundation.org> References: <20220412062943.670770901@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Ray Jui [ Upstream commit 27d4073f8d9af0340362554414f4961643a4f4de ] Add checks in the XDP redirect callback to prevent XDP from running when the TX ring is undergoing shutdown. Also remove redundant checks in the XDP redirect callback to validate the txr and the flag that indicates the ring supports XDP. The modulo arithmetic on 'tx_nr_rings_xdp' already guarantees the derived TX ring is an XDP ring. txr is also guaranteed to be valid after checking BNXT_STATE_OPEN and within RCU grace period. Fixes: f18c2b77b2e4 ("bnxt_en: optimized XDP_REDIRECT support") Reviewed-by: Vladimir Olovyannikov Signed-off-by: Ray Jui Signed-off-by: Michael Chan Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c index c59e46c7a1ca..148b58f3468b 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c @@ -229,14 +229,16 @@ int bnxt_xdp_xmit(struct net_device *dev, int num_frames, ring = smp_processor_id() % bp->tx_nr_rings_xdp; txr = &bp->tx_ring[ring]; + if (READ_ONCE(txr->dev_state) == BNXT_DEV_STATE_CLOSING) + return -EINVAL; + if (static_branch_unlikely(&bnxt_xdp_locking_key)) spin_lock(&txr->xdp_tx_lock); for (i = 0; i < num_frames; i++) { struct xdp_frame *xdp = frames[i]; - if (!txr || !bnxt_tx_avail(bp, txr) || - !(bp->bnapi[ring]->flags & BNXT_NAPI_FLAG_XDP)) + if (!bnxt_tx_avail(bp, txr)) break; mapping = dma_map_single(&pdev->dev, xdp->data, xdp->len, -- 2.35.1