linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: SeongJae Park <sj@kernel.org>
To: flyingpenghao@gmail.com
Cc: SeongJae Park <sj@kernel.org>,
	akpm@linux-foundation.org, damon@lists.linux.dev,
	Peng Hao <flyingpeng@tencent.com>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3]  mm/damon/lru_sort: adjust local variable to dynamic allocation
Date: Fri, 19 Jul 2024 10:42:34 -0700	[thread overview]
Message-ID: <20240719174234.47017-1-sj@kernel.org> (raw)
In-Reply-To: <20240719091100.42649-1-flyingpeng@tencent.com>

Hi Peng,


For DAMON patches, please Cc linux-mm@.  I'd also suggest Cc-ing linux-kernel@
if you don't mind.

On Fri, 19 Jul 2024 17:11:00 +0800 flyingpenghao@gmail.com wrote:

> From: Peng Hao <flyingpeng@tencent.com>
> 
> When KASAN is enabled and built with clang:
>     mm/damon/lru_sort.c:199:12: error: stack frame size (2328) exceeds limit (2048)
> in 'damon_lru_sort_apply_parameters' [-Werror,-Wframe-larger-than]
>     static int damon_lru_sort_apply_parameters(void)
>                ^
>     1 error generated.
> 
> This is because damon_lru_sort_quota contains a large array, and
> assigning this variable to a local variable causes a large amount of
> stack space to be occupied.
> 
> So adjust local variable to dynamic allocation.
> 
> v2: Change the histgram array in damon_quota to dynamic allocation.
> v1: Modify global variables directly.

Please put the version history under '---' line below, as suggested[1] by the
document.  Also, adding lore links to the previous versions would be helpful.

> 
> Signed-off-by: Peng Hao <flyingpeng@tencent.com>
> ---
>  mm/damon/core.c     |  1 +
>  mm/damon/lru_sort.c | 10 +++++++---
>  2 files changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/mm/damon/core.c b/mm/damon/core.c
> index 6392f1cc97a3..ac2b736c9115 100644
> --- a/mm/damon/core.c
> +++ b/mm/damon/core.c
> @@ -375,6 +375,7 @@ struct damos *damon_new_scheme(struct damos_access_pattern *pattern,
>  	INIT_LIST_HEAD(&scheme->list);
>  
>  	scheme->quota = *(damos_quota_init(quota));
> +	kfree(quota);

We don't know if the caller has something to do further with it after this
function returns.  Let's keep it do be done by the caller.

>  	/* quota.goals should be separately set by caller */
>  	INIT_LIST_HEAD(&scheme->quota.goals);
>  
> diff --git a/mm/damon/lru_sort.c b/mm/damon/lru_sort.c
> index 3de2916a65c3..3b417e413bf2 100644
> --- a/mm/damon/lru_sort.c
> +++ b/mm/damon/lru_sort.c
> @@ -148,10 +148,14 @@ static struct damon_target *target;
>  static struct damos *damon_lru_sort_new_scheme(
>  		struct damos_access_pattern *pattern, enum damos_action action)
>  {
> -	struct damos_quota quota = damon_lru_sort_quota;
> +	struct damos_quota *quota = kmemdup(&damon_lru_sort_quota,
> +					    sizeof(struct damos_quota), GFP_KERNEL);

Let's do sizeof(*damon_lru_sort_quota).  Also, please keep 80 columns line size
rule[2] for DAMON code.

[1] https://docs.kernel.org/process/submitting-patches.html#the-canonical-patch-format
[2] https://docs.kernel.org/process/coding-style.html#breaking-long-lines-and-strings

> +
> +	if (!quota)
> +		return NULL;
>  
>  	/* Use half of total quota for hot/cold pages sorting */
> -	quota.ms = quota.ms / 2;
> +	quota->ms = quota->ms / 2;
>  
>  	return damon_new_scheme(
>  			/* find the pattern, and */
> @@ -161,7 +165,7 @@ static struct damos *damon_lru_sort_new_scheme(
>  			/* for each aggregation interval */
>  			0,
>  			/* under the quota. */
> -			&quota,
> +			quota,
>  			/* (De)activate this according to the watermarks. */
>  			&damon_lru_sort_wmarks);
>  }
> -- 
> 2.27.0

Thanks,
SJ


           reply	other threads:[~2024-07-19 17:42 UTC|newest]

Thread overview: expand[flat|nested]  mbox.gz  Atom feed
 [parent not found: <20240719091100.42649-1-flyingpeng@tencent.com>]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240719174234.47017-1-sj@kernel.org \
    --to=sj@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=damon@lists.linux.dev \
    --cc=flyingpeng@tencent.com \
    --cc=flyingpenghao@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox