From patchwork Fri Jun 28 10:31:44 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 168054 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp3513544ilk; Fri, 28 Jun 2019 03:32:23 -0700 (PDT) X-Google-Smtp-Source: APXvYqxq85j6HlsLc2ei365K6wsQ9jnJ33QWHiGnxJBAzVPlfCdFM/noJYTwm+sAZXNVGMYISqh6 X-Received: by 2002:a17:902:bd0a:: with SMTP id p10mr10777573pls.134.1561717943649; Fri, 28 Jun 2019 03:32:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561717943; cv=none; d=google.com; s=arc-20160816; b=tDTZGlkq2r+8COdfuUXnDskht/3ukJYD/2kDl7Jb6bO8Bu6o9/CaN2vpJtNExKaqFQ dwGZfyTJIDg4CszsQjgZ2suenwL5vjdUPEtQEGWTJJ2j/jOmEj2eKMUgfVuwe1YatQmS 5n9mJlLemmCJJX3MjJNAUy8lzFXZBJu0PghOkPF230VE3nkUuobAXgfIXqCj6+FB0tBz iy6p/27tkCvgJhyvrQhjL5/Z0leHDE8Cegm7NfG9dDCjEm8pymPcAPXyvj3ZglHhYnli QeL9xCXyvmEhgb9G4UlVCqkGTFHGVtM5+vCUsbJC7eQEumIm/lANWqQOl7/niF4/XjmY zVKg== 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 :message-id:date:subject:cc:to:from; bh=VhFaK0XS2pifN7sSiCx0lQKbKX4JbdobmtnxB/lb3Pw=; b=WbIW3+99dOVVruJYXsoypvyH/7MTWPYc7qwOcUTP1dqs0ULQ2uINRLpLkiMkA20Czx cg4k4ehWEzw6Nrx4Ow8ryEtiEnLHKBdp6Go91/IoN92yvVZmKsHtbefULZfSas7dURTk Jy3cUG91qBkP/2lMlT5PwHtUpE36FWZthJSnWXRTAJKAKGrVNuCYod1x/KaTaKLz4z4l Rot2FMmhJa9D5ENS8E5qfJI3+YjY/ZXH1BxTjE2sMEdHSU0jORSUHavUEjzijnbphsxa BP5PkMcztlSoIVdAc9FyEay0ro4Vsl0T89nLRRmVDK03Sx0nM/OMO8rJMMl00Nd7NXgk 9nrQ== ARC-Authentication-Results: i=1; mx.google.com; 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 b31si1829927pgm.466.2019.06.28.03.32.23; Fri, 28 Jun 2019 03:32:23 -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; 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 S1726749AbfF1KcW (ORCPT + 30 others); Fri, 28 Jun 2019 06:32:22 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:57693 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726484AbfF1KcV (ORCPT ); Fri, 28 Jun 2019 06:32:21 -0400 Received: from threadripper.lan ([149.172.19.189]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.145]) with ESMTPA (Nemesis) id 1M6ltQ-1he45c1Zlu-008HB7; Fri, 28 Jun 2019 12:32:02 +0200 From: Arnd Bergmann To: Aviad Krawczyk , "David S. Miller" Cc: Arnd Bergmann , Xue Chaojing , Jesse Brandeburg , Zhao Chen , Eric Dumazet , dann frazier , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] hinic: reduce rss_init stack usage Date: Fri, 28 Jun 2019 12:31:44 +0200 Message-Id: <20190628103158.2446356-1-arnd@arndb.de> X-Mailer: git-send-email 2.20.0 MIME-Version: 1.0 X-Provags-ID: V03:K1:QYqTtvUivST2IBpYNwbYUeyahFSQ0lBwtIbf+kVFvKJocTNobD3 6oZnmk2BXjTOixp0JMhOYp5ecOqypzq2WAcggP2YyxYJ4gHZ+MT4EQM1++vHGj2/KQ5+oyn SI7TwHlzuPyA2DXGEAhyFDj3op66U9AI3PoPKSpxIZQNa5G7pmFPfX/AqplBNEs+94s6dVQ 5ZrbusWR4PJB7Msx7reMQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:vAu+k/1Jipc=:/rgUdU+92MUy0Czi/8OOPu jzWuggmU0hfDPFjrql2B5uc4F+INBBT8E2TRB1fksflWdlRQyJRl6sitiElZmKCpViSAOXcX3 URC7WkRgP2PvaN7etopF27r35pyIXb1OVP9AdyrXMHvJRe6OT7dWN1TE5scXiEmWaQNhjEhSz awEHcf+UIaeyw9MOz5oC0PGlIXuvO5F3EPj40CNT1A4PdHjx+d20z2JeXSu6r7nSorWpJTtbR xqo6h5tiuVeaXX+H99SOgn8UaPfjh4W7QUVY3AbWl/1JhBHA9IqYuMxbUyF/hBPs0WQgR2Yse qmQsa/f97SamCv0kQd+bezG/OmavEadLt1Q21hOf52Y+RESnK89MC3pghP7eon+iT4vMnI1c/ u9tP7chOcrOTG2D0zdMJydgHgoVVDyucPaNu0GmHl0fVQ88HR8K3CpQBAWejAgzyZI/eOAWaZ 9DkIBf6akZ8m5fzT7Z4WSYqUdA+wWS0gX71P6RQEiz+vgb5CzEmm7LKlBsENWUAEHVAIaU4no 6pIA6NQ3EYT9t77av15TU/ZjiavLwoVDQXPXsP7aIZo4XHR+LYLZ1VvTzKLUt+BlV6j2+OW3u PXJ8zfCb09ALH1hQDj2k39PcEKDKaj6EHEMVwrnNHuzmqsI2OfIpIQCRb6ggoIPIf45dEYENj IdmytUJN8Du2MtJu9wLjrKsNlzA9+uC1hCRrKuG1jQxGLOK1DhKhKWDWjOEMFW4wluoBCG3zi DeEjPwBPphsOLL/EUMMa83I1jO4S4J5JGUI2CA== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 32-bit architectures, putting an array of 256 u32 values on the stack uses more space than the warning limit: drivers/net/ethernet/huawei/hinic/hinic_main.c: In function 'hinic_rss_init': drivers/net/ethernet/huawei/hinic/hinic_main.c:286:1: error: the frame size of 1068 bytes is larger than 1024 bytes [-Werror=frame-larger-than=] I considered changing the code to use u8 values here, since that's all the hardware supports, but dynamically allocating the array is a more isolated fix here. Signed-off-by: Arnd Bergmann --- .../net/ethernet/huawei/hinic/hinic_main.c | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) -- 2.20.0 diff --git a/drivers/net/ethernet/huawei/hinic/hinic_main.c b/drivers/net/ethernet/huawei/hinic/hinic_main.c index 1b917543feac..ceb0e247f52d 100644 --- a/drivers/net/ethernet/huawei/hinic/hinic_main.c +++ b/drivers/net/ethernet/huawei/hinic/hinic_main.c @@ -256,37 +256,43 @@ static int hinic_configure_max_qnum(struct hinic_dev *nic_dev) static int hinic_rss_init(struct hinic_dev *nic_dev) { - u32 indir_tbl[HINIC_RSS_INDIR_SIZE] = { 0 }; u8 default_rss_key[HINIC_RSS_KEY_SIZE]; u8 tmpl_idx = nic_dev->rss_tmpl_idx; + u32 *indir_tbl; int err, i; + indir_tbl = kcalloc(HINIC_RSS_INDIR_SIZE, sizeof(u32), GFP_KERNEL); + if (!indir_tbl) + return -ENOMEM; + netdev_rss_key_fill(default_rss_key, sizeof(default_rss_key)); for (i = 0; i < HINIC_RSS_INDIR_SIZE; i++) indir_tbl[i] = ethtool_rxfh_indir_default(i, nic_dev->num_rss); err = hinic_rss_set_template_tbl(nic_dev, tmpl_idx, default_rss_key); if (err) - return err; + goto out; err = hinic_rss_set_indir_tbl(nic_dev, tmpl_idx, indir_tbl); if (err) - return err; + goto out; err = hinic_set_rss_type(nic_dev, tmpl_idx, nic_dev->rss_type); if (err) - return err; + goto out; err = hinic_rss_set_hash_engine(nic_dev, tmpl_idx, nic_dev->rss_hash_engine); if (err) - return err; + goto out; err = hinic_rss_cfg(nic_dev, 1, tmpl_idx); if (err) - return err; + goto out; - return 0; +out: + kfree(indir_tbl); + return err; } static void hinic_rss_deinit(struct hinic_dev *nic_dev)