From patchwork Fri May 5 19:47:03 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 98733 Delivered-To: patch@linaro.org Received: by 10.140.96.100 with SMTP id j91csp293583qge; Fri, 5 May 2017 12:50:30 -0700 (PDT) X-Received: by 10.84.229.10 with SMTP id b10mr67650635plk.148.1494013716223; Fri, 05 May 2017 12:48:36 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 144si6012850pfa.118.2017.05.05.12.48.36; Fri, 05 May 2017 12:48:36 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of stable-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 stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755569AbdEETse (ORCPT + 6 others); Fri, 5 May 2017 15:48:34 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:62793 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755324AbdEETsa (ORCPT ); Fri, 5 May 2017 15:48:30 -0400 Received: from wuerfel.lan ([78.42.17.5]) by mrelayeu.kundenserver.de (mreue002 [212.227.15.129]) with ESMTPA (Nemesis) id 0M007w-1du1Xu1PA4-00uG8n; Fri, 05 May 2017 21:48:22 +0200 From: Arnd Bergmann To: Ben Hutchings Cc: stable@vger.kernel.org, Joe Perches , Jeff Kirsher , Arnd Bergmann Subject: [PATCH 3.16-stable 45/87] i40e: Reduce stack in i40e_dbg_dump_desc Date: Fri, 5 May 2017 21:47:03 +0200 Message-Id: <20170505194745.3627137-46-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20170505194745.3627137-1-arnd@arndb.de> References: <20170505194745.3627137-1-arnd@arndb.de> MIME-Version: 1.0 X-Provags-ID: V03:K0:pg38+yWIQ0u5AA9P/XooNbYiN/2/Piz3flH2BAHp9Pmj1VzYTXG qLRdeSeL4nu5KwCZfSwbGolH0x15mwSGzrlUGzo3HVQBZivCLpODCQgBwPfh4ap+WZLLjTY V+4y584FQQo+eTIXw76Z8IDyunG+D9noS1lfC5fFHVbSrlhcTT8ErXallkt31faI/jPomRj CFsZmhDS149J2aWkV7R5Q== X-UI-Out-Filterresults: notjunk:1; V01:K0:Agn5VPcmTjg=:kzb0sLJITV1usEfhqbfW4w X+nl3MVTic1wFjwocpoAGR1qQkNowQjiNLny5Mv1A90I25CMXibz8XxyFTiBFTSfE4bvHH6Pq a1643aiDp4K+ILhk6SZdlKXPyKdSz5R81beAPhByU0IyWa7PA82r8Q+xWjX1tWKDG0masQM3c 4uwdOtZzjjBLyY5qxKdnLoeeQ2o8xWZzYZYAfxjZ5D9QMosITbHEqUtftjyWvl+Pt8tURcLML SZGSGqOFv4/XT6q4VYSX7+DPQgzG9GLK7p9+DPQklZMvLlizgmRc19etS6W6DmfLxul13MhLj ztEwoyuCYBJJcN+QjiGD70aBhvO7mtVVHxGh6ENxS06m+R9XJDFfkr3nCg9a3Jf9WHEbRkG7V G/ySupRTkLe7eGepfPPREZDhKJiv2wZWZLbrpiw4VqZpIHIjxmpu9EVhlZtw1GQobe4ulzItK IARvnDGOrNgubi/k4edaXnEqx27MgJtjKu91ZEJgfqb8Q6gvwQDgMP4D+r8+zuoJMlHKeF4Cr bN7TmaC5tJv9iuv0mZ26QciNdVTgMXZXEub4Lm+uNWN5cGitK6Sqe1jhauFpBxsKVBMvQRQOT vGWp6EKxe5p8rLaa9UxsOiMBnbysJ4S9u0ND/ZWWyLipZcxvTTLa68b2DNpgkx5AxRXLiWgWk U6ub1GvfcVyvybIxcqIqgPLVx/ssj8mnn2UsfzcD2A228WO8j8U5xEHmOVn9SC7p4M6/hsDwJ ZHPLDuBEfuTj+4WU Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Joe Perches Commit 1ddc2c00fdb275fcbb99a5585a6431f074cc0bc4 upstream. Reduce stack use by using kmemdup and not using a very large struct on stack. In function ‘i40e_dbg_dump_desc’: warning: the frame size of 8192 bytes is larger than 2048 bytes [-Wframe-larger-than=] Signed-off-by: Joe Perches Tested-by: Jim Young Signed-off-by: Jeff Kirsher Signed-off-by: Arnd Bergmann --- drivers/net/ethernet/intel/i40e/i40e_debugfs.c | 30 +++++++++++++++----------- 1 file changed, 17 insertions(+), 13 deletions(-) -- 2.9.0 diff --git a/drivers/net/ethernet/intel/i40e/i40e_debugfs.c b/drivers/net/ethernet/intel/i40e/i40e_debugfs.c index cffdfc21290f..decf6faaa89d 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_debugfs.c +++ b/drivers/net/ethernet/intel/i40e/i40e_debugfs.c @@ -754,7 +754,7 @@ static void i40e_dbg_dump_desc(int cnt, int vsi_seid, int ring_id, int desc_n, { struct i40e_tx_desc *txd; union i40e_rx_desc *rxd; - struct i40e_ring ring; + struct i40e_ring *ring; struct i40e_vsi *vsi; int i; @@ -773,29 +773,32 @@ static void i40e_dbg_dump_desc(int cnt, int vsi_seid, int ring_id, int desc_n, vsi_seid); return; } - if (is_rx_ring) - ring = *vsi->rx_rings[ring_id]; - else - ring = *vsi->tx_rings[ring_id]; + + ring = kmemdup(is_rx_ring + ? vsi->rx_rings[ring_id] : vsi->tx_rings[ring_id], + sizeof(*ring), GFP_KERNEL); + if (!ring) + return; + if (cnt == 2) { dev_info(&pf->pdev->dev, "vsi = %02i %s ring = %02i\n", vsi_seid, is_rx_ring ? "rx" : "tx", ring_id); - for (i = 0; i < ring.count; i++) { + for (i = 0; i < ring->count; i++) { if (!is_rx_ring) { - txd = I40E_TX_DESC(&ring, i); + txd = I40E_TX_DESC(ring, i); dev_info(&pf->pdev->dev, " d[%03i] = 0x%016llx 0x%016llx\n", i, txd->buffer_addr, txd->cmd_type_offset_bsz); } else if (sizeof(union i40e_rx_desc) == sizeof(union i40e_16byte_rx_desc)) { - rxd = I40E_RX_DESC(&ring, i); + rxd = I40E_RX_DESC(ring, i); dev_info(&pf->pdev->dev, " d[%03i] = 0x%016llx 0x%016llx\n", i, rxd->read.pkt_addr, rxd->read.hdr_addr); } else { - rxd = I40E_RX_DESC(&ring, i); + rxd = I40E_RX_DESC(ring, i); dev_info(&pf->pdev->dev, " d[%03i] = 0x%016llx 0x%016llx 0x%016llx 0x%016llx\n", i, rxd->read.pkt_addr, @@ -804,26 +807,26 @@ static void i40e_dbg_dump_desc(int cnt, int vsi_seid, int ring_id, int desc_n, } } } else if (cnt == 3) { - if (desc_n >= ring.count || desc_n < 0) { + if (desc_n >= ring->count || desc_n < 0) { dev_info(&pf->pdev->dev, "descriptor %d not found\n", desc_n); return; } if (!is_rx_ring) { - txd = I40E_TX_DESC(&ring, desc_n); + txd = I40E_TX_DESC(ring, desc_n); dev_info(&pf->pdev->dev, "vsi = %02i tx ring = %02i d[%03i] = 0x%016llx 0x%016llx\n", vsi_seid, ring_id, desc_n, txd->buffer_addr, txd->cmd_type_offset_bsz); } else if (sizeof(union i40e_rx_desc) == sizeof(union i40e_16byte_rx_desc)) { - rxd = I40E_RX_DESC(&ring, desc_n); + rxd = I40E_RX_DESC(ring, desc_n); dev_info(&pf->pdev->dev, "vsi = %02i rx ring = %02i d[%03i] = 0x%016llx 0x%016llx\n", vsi_seid, ring_id, desc_n, rxd->read.pkt_addr, rxd->read.hdr_addr); } else { - rxd = I40E_RX_DESC(&ring, desc_n); + rxd = I40E_RX_DESC(ring, desc_n); dev_info(&pf->pdev->dev, "vsi = %02i rx ring = %02i d[%03i] = 0x%016llx 0x%016llx 0x%016llx 0x%016llx\n", vsi_seid, ring_id, desc_n, @@ -833,6 +836,7 @@ static void i40e_dbg_dump_desc(int cnt, int vsi_seid, int ring_id, int desc_n, } else { dev_info(&pf->pdev->dev, "dump desc rx/tx []\n"); } + kfree(ring); } /**