From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C0969A00C4; Mon, 31 Oct 2022 06:07:12 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 61E3740151; Mon, 31 Oct 2022 06:07:12 +0100 (CET) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mails.dpdk.org (Postfix) with ESMTP id D948B400D5 for ; Mon, 31 Oct 2022 06:07:10 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1667192831; x=1698728831; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=9w1TfoFqGnGu0cP+Xucj/QLCCsc09nImXZlhI5D4Pp4=; b=BYOFFOjN9353eTTYZXFZuQSKfVxmbj8ZPoOFmCgwT2Okym2sEWoDiF+X BDTikzNwh97DgZ7KWf6Y2s035SWxaSCPHNzOWW3v5N/iSJNUw5uriyVzn lrYbYuSZzNf2owG+3/bRPWb/4m38mEWDg1NLjVbHMg9Fg+3Ygh4hnj+16 kv7fMcOE/a8I8F9yb1KvOxEfcP02rxf2/cQ7+RFw2O7grY5DuA2uwAJCD gsleAHtLwAjqdcg/zsO2EU5s8K5BzYDOjVw6bwzXeSJ/E/slsoEGf8bs+ Nw/Azte5tWv0yKZY8UfooSg4a4YCramxcwYv3HQ4KlYYBdEl01NG1oeGh Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10516"; a="335472574" X-IronPort-AV: E=Sophos;i="5.95,227,1661842800"; d="scan'208";a="335472574" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Oct 2022 22:07:09 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10516"; a="878603381" X-IronPort-AV: E=Sophos;i="5.95,227,1661842800"; d="scan'208";a="878603381" Received: from dpdk-jf-ntb-one.sh.intel.com ([10.67.111.104]) by fmsmga006.fm.intel.com with ESMTP; 30 Oct 2022 22:07:08 -0700 From: Junfeng Guo To: qi.z.zhang@intel.com, jingjing.wu@intel.com, ferruh.yigit@xilinx.com, beilei.xing@intel.com Cc: dev@dpdk.org, Junfeng Guo Subject: [PATCH] net/gve: fix pointers dereference before null check Date: Mon, 31 Oct 2022 13:05:16 +0800 Message-Id: <20221031050516.2289622-1-junfeng.guo@intel.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The pointers 'rxq' and 'txq' are dereferenced before the null check. Fixed the logic in this patch. Fixes: 4bec2d0b5572 ("net/gve: support queue operations") Signed-off-by: Junfeng Guo --- drivers/net/gve/gve_rx.c | 3 ++- drivers/net/gve/gve_tx.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/net/gve/gve_rx.c b/drivers/net/gve/gve_rx.c index ea397d68fa..4c5b8c517d 100644 --- a/drivers/net/gve/gve_rx.c +++ b/drivers/net/gve/gve_rx.c @@ -150,7 +150,7 @@ gve_rx_burst(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) static inline void gve_reset_rxq(struct gve_rx_queue *rxq) { - struct rte_mbuf **sw_ring = rxq->sw_ring; + struct rte_mbuf **sw_ring; uint32_t size, i; if (rxq == NULL) { @@ -166,6 +166,7 @@ gve_reset_rxq(struct gve_rx_queue *rxq) for (i = 0; i < size; i++) ((volatile char *)rxq->rx_data_ring)[i] = 0; + sw_ring = rxq->sw_ring; for (i = 0; i < rxq->nb_rx_desc; i++) sw_ring[i] = NULL; diff --git a/drivers/net/gve/gve_tx.c b/drivers/net/gve/gve_tx.c index cd0bdaa2ad..4420a17192 100644 --- a/drivers/net/gve/gve_tx.c +++ b/drivers/net/gve/gve_tx.c @@ -463,7 +463,7 @@ gve_tx_burst(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) static inline void gve_reset_txq(struct gve_tx_queue *txq) { - struct rte_mbuf **sw_ring = txq->sw_ring; + struct rte_mbuf **sw_ring; uint32_t size, i; if (txq == NULL) { @@ -475,6 +475,7 @@ gve_reset_txq(struct gve_tx_queue *txq) for (i = 0; i < size; i++) ((volatile char *)txq->tx_desc_ring)[i] = 0; + sw_ring = txq->sw_ring; for (i = 0; i < txq->nb_tx_desc; i++) { sw_ring[i] = NULL; if (txq->is_gqi_qpl) { -- 2.34.1