Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp2251083pxb; Mon, 20 Sep 2021 16:38:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzGRXoj8i7nSvomnNY3AvFtDGLwHp1jZUCGfd67V2Hbx/1YxLZTZIhoIdYkQlE9CUT0tMEk X-Received: by 2002:a6b:7016:: with SMTP id l22mr9115678ioc.48.1632181106696; Mon, 20 Sep 2021 16:38:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632181106; cv=none; d=google.com; s=arc-20160816; b=VobBCAlkC8egeporU7x48YQRog/2Hddrs48984jO/WK5vpB/XqjFpSmG8zHRMVsmU7 qwHtO6Y/TxoOVGLtSjfiEpq6AlaCFPsshfCN4YzkqhtU71MYuOisnyeLTPaSBDhgu/YX 7QnBHnWtE8GYO+qrPftHIVR7SrQ1uXX2Xft5dhlJW+U76cAKm5h0FFYRFXIgXsN/Sz9e DBVa7UEYT+kAqnBRcvZoaIbnYPRPgtopXiyKud0VEJj1WIG97KWnyHNdDt+3AHqSajV3 ZN6gongRwtd/nhtoidxIhy19M6G+AfUjwP8futcnd+7qQQTVzbuiyMb8tBXt2V+bnfzv DHGA== 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=s+cbGAdxw/sghZvm54YxPVpJu6bh644f9w+nKfC+KGI=; b=agIIA0ak+CVTjNObrRimLVGOXEODBMGRC7J04N9zubSElBGLlODb02u0kqFgzeuy5U ct9yTShl63/oCa940dbEN1UGJ0Am0NKi8YV7HOlO44OpAVWFbHu5N9d7APdAR2H/iwYc cgBjhtcGHoN6eAJ3hxyv4gILfrtM+Q8QYQ16MIuLQUTmpxm/jPur7BPSmCbtiUkRR1SN HKxmF6K20nb57VWKfXZ+zntNBmhe9kH7c2CJ+SfpFEYiWDkpUlKmTT4DbFyuZHhWVlxK U2iPQy7m0B8UmZOHvq5+JxXz0eev+cVK16nL+olTnpurOTwnPPBuBS+b4jGFmDJbwlZv se9Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sipsolutions.net header.s=mail header.b=lfIROpIX; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=sipsolutions.net Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id e35si12951529jaa.106.2021.09.20.16.38.17; Mon, 20 Sep 2021 16:38:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-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=@sipsolutions.net header.s=mail header.b=lfIROpIX; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=sipsolutions.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239398AbhITNlp (ORCPT + 78 others); Mon, 20 Sep 2021 09:41:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40090 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237413AbhITNlm (ORCPT ); Mon, 20 Sep 2021 09:41:42 -0400 Received: from sipsolutions.net (s3.sipsolutions.net [IPv6:2a01:4f8:191:4433::2]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B5C2DC061764 for ; Mon, 20 Sep 2021 06:40:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sipsolutions.net; s=mail; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Content-Type:Sender :Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-To: Resent-Cc:Resent-Message-ID; bh=s+cbGAdxw/sghZvm54YxPVpJu6bh644f9w+nKfC+KGI=; t=1632145215; x=1633354815; b=lfIROpIXpwFHm93918CH5mQUm1VWa+WZC+JmA+nQMMOIi92 iAj+VPpuc0g8AavflW6iGexXK8dwcC4yUvuIjKYOIY9zmpGEaKpoIbwyAbukUIFn/ZnaUHMxoWoLK OR+n0q4JDbTcH1nxDn9UmRiimrWfpJJd5EaHSQcKctsweFnRgaQXoj+l6scY7SiT4DdgdFixlNXYE 2h18KaPkf5krH0V+fDkrOrBwR7rmbefQ2wYoWgQwGsq32jCbiiiJ1AqqB6tp7dajA9bWEkEDevBVM YbiLSXKh5Ycig6mDKD02xtYUel/N9UtKAlk23lH2dXRGhciibfEEy8xgLG5psL8w==; Received: by sipsolutions.net with esmtpsa (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.95-RC2) (envelope-from ) id 1mSJWn-009SO7-8J; Mon, 20 Sep 2021 15:40:13 +0200 From: Johannes Berg To: linux-wireless@vger.kernel.org Cc: Johannes Berg Subject: [PATCH v2 2/6] mac80211: reduce stack usage in debugfs Date: Mon, 20 Sep 2021 15:40:06 +0200 Message-Id: <20210920154009.1387f44e7382.Ife043c169e6a44edace516fea9f8311a5ca4282a@changeid> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210920154009.3110ff75be0c.Ib6a2ff9e9cc9bc6fca50fce631ec1ce725cc926b@changeid> References: <20210920154009.3110ff75be0c.Ib6a2ff9e9cc9bc6fca50fce631ec1ce725cc926b@changeid> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org From: Johannes Berg We put a few large buffers on the stack here, but it's easy to just allocate them on the heap, so do that. Signed-off-by: Johannes Berg --- net/mac80211/debugfs_sta.c | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/net/mac80211/debugfs_sta.c b/net/mac80211/debugfs_sta.c index 8be28cfd6f64..da22725eca0f 100644 --- a/net/mac80211/debugfs_sta.c +++ b/net/mac80211/debugfs_sta.c @@ -5,7 +5,7 @@ * Copyright 2007 Johannes Berg * Copyright 2013-2014 Intel Mobile Communications GmbH * Copyright(c) 2016 Intel Deutschland GmbH - * Copyright (C) 2018 - 2020 Intel Corporation + * Copyright (C) 2018 - 2021 Intel Corporation */ #include @@ -314,11 +314,17 @@ STA_OPS_RW(aql); static ssize_t sta_agg_status_read(struct file *file, char __user *userbuf, size_t count, loff_t *ppos) { - char buf[71 + IEEE80211_NUM_TIDS * 40], *p = buf; + char *buf, *p; int i; struct sta_info *sta = file->private_data; struct tid_ampdu_rx *tid_rx; struct tid_ampdu_tx *tid_tx; + ssize_t ret; + + buf = kzalloc(71 + IEEE80211_NUM_TIDS * 40, GFP_KERNEL); + if (!buf) + return -ENOMEM; + p = buf; rcu_read_lock(); @@ -352,7 +358,9 @@ static ssize_t sta_agg_status_read(struct file *file, char __user *userbuf, } rcu_read_unlock(); - return simple_read_from_buffer(userbuf, count, ppos, buf, p - buf); + ret = simple_read_from_buffer(userbuf, count, ppos, buf, p - buf); + kfree(buf); + return ret; } static ssize_t sta_agg_status_write(struct file *file, const char __user *userbuf, @@ -434,10 +442,16 @@ static ssize_t sta_ht_capa_read(struct file *file, char __user *userbuf, if (_cond) \ p += scnprintf(p, sizeof(buf)+buf-p, "\t" _str "\n"); \ } while (0) - char buf[512], *p = buf; + char *buf, *p; int i; struct sta_info *sta = file->private_data; struct ieee80211_sta_ht_cap *htc = &sta->sta.ht_cap; + ssize_t ret; + + buf = kzalloc(512, GFP_KERNEL); + if (!buf) + return -ENOMEM; + p = buf; p += scnprintf(p, sizeof(buf) + buf - p, "ht %ssupported\n", htc->ht_supported ? "" : "not "); @@ -504,16 +518,24 @@ static ssize_t sta_ht_capa_read(struct file *file, char __user *userbuf, htc->mcs.tx_params); } - return simple_read_from_buffer(userbuf, count, ppos, buf, p - buf); + ret = simple_read_from_buffer(userbuf, count, ppos, buf, p - buf); + kfree(buf); + return ret; } STA_OPS(ht_capa); static ssize_t sta_vht_capa_read(struct file *file, char __user *userbuf, size_t count, loff_t *ppos) { - char buf[512], *p = buf; + char *buf, *p; struct sta_info *sta = file->private_data; struct ieee80211_sta_vht_cap *vhtc = &sta->sta.vht_cap; + ssize_t ret; + + buf = kzalloc(512, GFP_KERNEL); + if (!buf) + return -ENOMEM; + p = buf; p += scnprintf(p, sizeof(buf) + buf - p, "VHT %ssupported\n", vhtc->vht_supported ? "" : "not "); @@ -609,7 +631,9 @@ static ssize_t sta_vht_capa_read(struct file *file, char __user *userbuf, #undef PFLAG } - return simple_read_from_buffer(userbuf, count, ppos, buf, p - buf); + ret = simple_read_from_buffer(userbuf, count, ppos, buf, p - buf); + kfree(buf); + return ret; } STA_OPS(vht_capa); -- 2.31.1