2019-09-27 16:15:22

by chengkaitao

[permalink] [raw]
Subject: [PATCH] mm, page_alloc: drop pointless static qualifier in build_zonelists()

There is no need to make the 'node_order' variable static
since new value always be assigned before use it.

Signed-off-by: Kaitao Cheng <[email protected]>
Signed-off-by: Muchun Song <[email protected]>
---
mm/page_alloc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 3334a769eb91..c473c304d09f 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -5597,7 +5597,7 @@ static void build_thisnode_zonelists(pg_data_t *pgdat)

static void build_zonelists(pg_data_t *pgdat)
{
- static int node_order[MAX_NUMNODES];
+ int node_order[MAX_NUMNODES];
int node, load, nr_nodes = 0;
nodemask_t used_mask;
int local_node, prev_node;
--
2.20.1


2019-09-27 19:34:42

by Dan Williams

[permalink] [raw]
Subject: Re: [PATCH] mm, page_alloc: drop pointless static qualifier in build_zonelists()

On Fri, Sep 27, 2019 at 9:14 AM Kaitao Cheng <[email protected]> wrote:
>
> There is no need to make the 'node_order' variable static
> since new value always be assigned before use it.
>
> Signed-off-by: Kaitao Cheng <[email protected]>
> Signed-off-by: Muchun Song <[email protected]>
> ---
> mm/page_alloc.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 3334a769eb91..c473c304d09f 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -5597,7 +5597,7 @@ static void build_thisnode_zonelists(pg_data_t *pgdat)
>
> static void build_zonelists(pg_data_t *pgdat)
> {
> - static int node_order[MAX_NUMNODES];
> + int node_order[MAX_NUMNODES];

This isn't pointless. This prevents 4KB stack allocation which might overflow.

Subject: Re: [PATCH] mm, page_alloc: drop pointless static qualifier in build_zonelists()

On Sat, 28 Sep 2019, Kaitao Cheng wrote:

> There is no need to make the 'node_order' variable static
> since new value always be assigned before use it.

In the past MAX_NUMMNODES could become quite large like 512 or 1k. Large
array allocations on the stack are problematic.

Maybe that is no longer the case?

2019-10-08 19:22:16

by Michal Hocko

[permalink] [raw]
Subject: Re: [PATCH] mm, page_alloc: drop pointless static qualifier in build_zonelists()

On Tue 08-10-19 19:06:57, Cristopher Lameter wrote:
> On Sat, 28 Sep 2019, Kaitao Cheng wrote:
>
> > There is no need to make the 'node_order' variable static
> > since new value always be assigned before use it.
>
> In the past MAX_NUMMNODES could become quite large like 512 or 1k. Large
> array allocations on the stack are problematic.
>
> Maybe that is no longer the case?

CONFIG_NODES_SHIFT=10 is nothing really unusual in distribution kernels.
Likely wasteful for most HW available but a proper way to address it in
this particular case is to use a different data structure than drop the
static modifier which seems to be more of an misunderstanding than an
intention.
--
Michal Hocko
SUSE Labs