Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp2467371pxb; Mon, 19 Apr 2021 06:29:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJymEhd1ycT9rwvJ/37pqd+8kj3Q2oghObvxLIEbUbEqnNhkRsVaHedPHF9r9g8kHIvRIYMe X-Received: by 2002:aa7:d1ce:: with SMTP id g14mr19050008edp.122.1618838944423; Mon, 19 Apr 2021 06:29:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618838944; cv=none; d=google.com; s=arc-20160816; b=aHlINW0oXfXjK3MZQdWJsLCXXiCDlUgjGXQjTtEIsOEXB7GysOBC4/DA8NhrtkEtfZ xE30NAxxFt0LdE69eFbaC2sNJMrYqKhA70/9CVVrFfz89Nn/1POIQzL3gmsi5E3E8Gqg AP5NGscSI59ZAX81aXy89XBU+nfx3MgW3w2UeJOMFHZxtqF6ZTgslyvOB1uCtfQlT9Jf 1lLdELq13v8vHGbCw4pVVUBFVqBmBSY3KpA0lsVZsyYlTjXBqMftjDOWPPtttd5ARiph 2mWTRm1WiSS1Kgc7yAkjAg0fLvlDtHePHQG4wpeQqeP1G/gYDQo0mspZLr6sWIAEMKhQ vP2g== 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=YLDNndfqVdTtbTL+Ev2p1tTC0+hvr+ieCUsW4f0+Hfs=; b=NBzExCAMwnPni0uDkegg6N21tLxsB3axZJKINxmv4Ke/OvhLA4k0TWZAzJpPOGbeL5 LykqjxfRxajJdjbPf0vfjmX7OtoaTu3Xl2Laju+eke4Nr6CMevvDvpNuVkmIE7+0ClXP J8SIA16IwFx/xSTiroXORrbbvYoWCdXZz2SvL6SsFuXvLon7+jcvNtLscbLU1f5h9CdR F75/6mvtiK/XJ/xnjenXODo3uVNjlOdNq64V4aPnQPXEXPbswA0gvm1vX42T8EIHTGqv 2219p5SGGos4rq+HVpHbntwqYa2b1MQF97zPmd4+GEVFKbqD79kiGqrI9wTFuBitcmrZ Go7A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=IttyBnCB; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x11si12437850edd.260.2021.04.19.06.28.40; Mon, 19 Apr 2021 06:29:04 -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=@linuxfoundation.org header.s=korg header.b=IttyBnCB; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240376AbhDSN1S (ORCPT + 99 others); Mon, 19 Apr 2021 09:27:18 -0400 Received: from mail.kernel.org ([198.145.29.99]:56886 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241386AbhDSNU2 (ORCPT ); Mon, 19 Apr 2021 09:20:28 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 7A5B1613CA; Mon, 19 Apr 2021 13:16:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1618838190; bh=syfhT2SejV+kM/0naxWC2Ki9Yo97UBA/cYRwMDp5r2U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IttyBnCBYZLweC6JYmWLo3+4jw7WaY7KuFoTFnhwBEYZTgVjnxegIgS5qE+vjS4mL Lk5uSkSpUbBIM2wuWUVYgIE/V6PI2i5nGWy63u1hhnmJJy9jPkjO+zlxPDC7S91pm6 9rdo7Q1X43ItBLODhuk2toxr+Lf4Wf8Gmqn/EkO8= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Shujin Li , Jason Xing , Jesse Brandeburg , Jesper Dangaard Brouer , "David S. Miller" Subject: [PATCH 5.10 074/103] i40e: fix the panic when running bpf in xdpdrv mode Date: Mon, 19 Apr 2021 15:06:25 +0200 Message-Id: <20210419130530.356325524@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210419130527.791982064@linuxfoundation.org> References: <20210419130527.791982064@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jason Xing commit 4e39a072a6a0fc422ba7da5e4336bdc295d70211 upstream. Fix this panic by adding more rules to calculate the value of @rss_size_max which could be used in allocating the queues when bpf is loaded, which, however, could cause the failure and then trigger the NULL pointer of vsi->rx_rings. Prio to this fix, the machine doesn't care about how many cpus are online and then allocates 256 queues on the machine with 32 cpus online actually. Once the load of bpf begins, the log will go like this "failed to get tracking for 256 queues for VSI 0 err -12" and this "setup of MAIN VSI failed". Thus, I attach the key information of the crash-log here. BUG: unable to handle kernel NULL pointer dereference at 0000000000000000 RIP: 0010:i40e_xdp+0xdd/0x1b0 [i40e] Call Trace: [2160294.717292] ? i40e_reconfig_rss_queues+0x170/0x170 [i40e] [2160294.717666] dev_xdp_install+0x4f/0x70 [2160294.718036] dev_change_xdp_fd+0x11f/0x230 [2160294.718380] ? dev_disable_lro+0xe0/0xe0 [2160294.718705] do_setlink+0xac7/0xe70 [2160294.719035] ? __nla_parse+0xed/0x120 [2160294.719365] rtnl_newlink+0x73b/0x860 Fixes: 41c445ff0f48 ("i40e: main driver core") Co-developed-by: Shujin Li Signed-off-by: Shujin Li Signed-off-by: Jason Xing Reviewed-by: Jesse Brandeburg Acked-by: Jesper Dangaard Brouer Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/net/ethernet/intel/i40e/i40e_main.c | 6 ++++++ 1 file changed, 6 insertions(+) --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -11863,6 +11863,7 @@ static int i40e_sw_init(struct i40e_pf * { int err = 0; int size; + u16 pow; /* Set default capability flags */ pf->flags = I40E_FLAG_RX_CSUM_ENABLED | @@ -11881,6 +11882,11 @@ static int i40e_sw_init(struct i40e_pf * pf->rss_table_size = pf->hw.func_caps.rss_table_size; pf->rss_size_max = min_t(int, pf->rss_size_max, pf->hw.func_caps.num_tx_qp); + + /* find the next higher power-of-2 of num cpus */ + pow = roundup_pow_of_two(num_online_cpus()); + pf->rss_size_max = min_t(int, pf->rss_size_max, pow); + if (pf->hw.func_caps.rss) { pf->flags |= I40E_FLAG_RSS_ENABLED; pf->alloc_rss_size = min_t(int, pf->rss_size_max,