Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp122592pxb; Tue, 15 Feb 2022 06:47:49 -0800 (PST) X-Google-Smtp-Source: ABdhPJyjQxo3uwW7XBRBL8g9gAtCOkYaXhgWKsLW70F/JieapoDu6f2KndEhaKXIRvMFc1mhprzM X-Received: by 2002:a05:6402:2802:: with SMTP id h2mr4264376ede.255.1644936469023; Tue, 15 Feb 2022 06:47:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644936469; cv=none; d=google.com; s=arc-20160816; b=ywunA8HNQ34Z3926P+Hq+Rppb6QUOXK9B6YHEQ+tpsRgxyTpl2QW0DYsQtqsUkWkJ+ Y0vQl/Ls4PGSru6m1GPOBFm6Rt1vicFDDo+1dUlbLMIk7hvBOCF8IvmwX/CeSQTCChUV JPievzBCNWbpEw8cnVb5CnjhsjRw+ZSHq8JfDOCW3gDilFbou/lOzezkFV9uX8WEAKZJ wybeN/kG7pwrXtOSpMqWtyK70UJWP6Zqk5BcIaQ2uVKEDj49A5OOhS+M7Hb78Wub1j2s mAHCZOUECLrC6uCj+oGSeMl1j97baYWWufyze524dz+jtuQxcDwx667chbq0ydRrEFuZ 14AQ== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=tO/HLlf1HBsSMS+bASVy73XYdO9o8ZSIDzMAEpiqvsg=; b=IjmNfmsbHSJsKCTGsrw5IYnXZLDAuW6Xezrf2zXNdTC9i0crf+j73OAPRA2LcFpraM jj4fJy7/jpq0mUGHCHdvJNK1tAHOmpkQSh5Ohod/N61bGRbUs2LNH366u/XuJx5fQXX5 JL/6a+PPudDCcbuFLdtDYo3M2GRUYgwj61uOtoI/ISKsqj30ViSMIDGMCUjkBL5zWNAD O+vob+z5xTTFKOmLvUxdsQV0UsO9BeiOABGZryZiJqhnSdQgRmDVQ1dHTrNU2YcWrpRd OqEz/GjGNgr1Y6e0wl9TZkiCJeNfjigknx9D9BNmf6DUWhsqolakAq04cI7eJ+5IyFUN F3gA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=IQOzleTG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m4si19136106ejn.639.2022.02.15.06.47.22; Tue, 15 Feb 2022 06:47:49 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=IQOzleTG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234242AbiBOFwd (ORCPT + 99 others); Tue, 15 Feb 2022 00:52:33 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:46726 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234252AbiBOFw0 (ORCPT ); Tue, 15 Feb 2022 00:52:26 -0500 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3DDA9DFF5; Mon, 14 Feb 2022 21:52:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1644904336; x=1676440336; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=p/uMbZPPiZReXrMs+XWU+QXob/0etjYoC1lD26VUKfE=; b=IQOzleTGZbkrvx3Dv1/7Wvps8usCvgcXGjxV2+WY7OqwoWQKqbnn20J/ nm+D2q8DpQz5LNnip8czwbkjTc8y4WzT/ktrI/4hzderZeQDKEntFgFaF gEjMTJEGya84bgXuRsS0MLP0zXFPgb/4KSMOdJWBqUyTUEap902mnDmya 2bNARdlMQzA9LOEuQy1vYlZFOHr9sM+Vq+Nj06+1lhLKletQk3a5Uw/Xg QqAjAlSGkdhx4lJaCgW/fW0U0Q5dfX2bxRcer+XiWw1EmLKChklmdiX22 +ijpIea0LedS/T2hbujpCRrds8O3wQQ+giGDisnCmjRib008ar67O0Gum w==; X-IronPort-AV: E=McAfee;i="6200,9189,10258"; a="230218526" X-IronPort-AV: E=Sophos;i="5.88,370,1635231600"; d="scan'208";a="230218526" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Feb 2022 21:52:16 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,370,1635231600"; d="scan'208";a="528642306" Received: from npg-dpdk-haiyue-2.sh.intel.com ([10.67.118.240]) by orsmga007.jf.intel.com with ESMTP; 14 Feb 2022 21:52:12 -0800 From: Haiyue Wang To: netdev@vger.kernel.org Cc: Haiyue Wang , Jeroen de Borst , Catherine Sullivan , David Awogbemila , "David S. Miller" , Jakub Kicinski , Willem de Bruijn , Bailey Forrest , Christophe JAILLET , Tao Liu , John Fraker , Yangchun Fu , linux-kernel@vger.kernel.org (open list) Subject: [PATCH net-next v2] gve: enhance no queue page list detection Date: Tue, 15 Feb 2022 13:17:49 +0800 Message-Id: <20220215051751.260866-1-haiyue.wang@intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220214024134.223939-1-haiyue.wang@intel.com> References: <20220214024134.223939-1-haiyue.wang@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,HK_RANDOM_ENVFROM, HK_RANDOM_FROM,RCVD_IN_DNSWL_MED,SPF_HELO_PASS,SPF_NONE, T_SCC_BODY_TEXT_LINE autolearn=ham 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 The commit a5886ef4f4bf ("gve: Introduce per netdev `enum gve_queue_format`") introduces three queue format type, only GVE_GQI_QPL_FORMAT queue has page list. So it should use the queue page list number to detect the zero size queue page list. Correct the design logic. Using the 'queue_format == GVE_GQI_RDA_FORMAT' may lead to request zero sized memory allocation, like if the queue format is GVE_DQO_RDA_FORMAT. The kernel memory subsystem will return ZERO_SIZE_PTR, which is not NULL address, so the driver can run successfully. Also the code still checks the queue page list number firstly, then accesses the allocated memory, so zero number queue page list allocation will not lead to access fault. Signed-off-by: Haiyue Wang --- drivers/net/ethernet/google/gve/gve_main.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/google/gve/gve_main.c b/drivers/net/ethernet/google/gve/gve_main.c index 54e51c8221b8..6cafee55efc3 100644 --- a/drivers/net/ethernet/google/gve/gve_main.c +++ b/drivers/net/ethernet/google/gve/gve_main.c @@ -857,8 +857,7 @@ static int gve_alloc_qpls(struct gve_priv *priv) int i, j; int err; - /* Raw addressing means no QPLs */ - if (priv->queue_format == GVE_GQI_RDA_FORMAT) + if (num_qpls == 0) return 0; priv->qpls = kvcalloc(num_qpls, sizeof(*priv->qpls), GFP_KERNEL); @@ -901,8 +900,7 @@ static void gve_free_qpls(struct gve_priv *priv) int num_qpls = gve_num_tx_qpls(priv) + gve_num_rx_qpls(priv); int i; - /* Raw addressing means no QPLs */ - if (priv->queue_format == GVE_GQI_RDA_FORMAT) + if (num_qpls == 0) return; kvfree(priv->qpl_cfg.qpl_id_map); -- 2.35.1