Skip to contentSkip to conversation

Patch "percpu: don't forget to free the temporary struct pcpu_alloc_info" has been added to the 4.14-stable tree

PATCH [email protected] 3 participants 5 messages Dec 20, 2017 – Dec 21, 2017

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

percpu: don't forget to free the temporary struct pcpu_alloc_info

to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
percpu-don-t-forget-to-free-the-temporary-struct-pcpu_alloc_info.patch
and it can be found in the queue-4.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From foo@baz Wed Dec 20 18:17:52 CET 2017

From: Nicolas Pitre <[email protected]>
Date: Tue, 3 Oct 2017 18:29:49 -0400
Subject: percpu: don't forget to free the temporary struct pcpu_alloc_info

From: Nicolas Pitre <[email protected]>

[ Upstream commit 438a50618095061920d3a30d4c5ca1ef2e0ff860 ]

Unlike the SMP case, the !SMP case does not free the memory for struct pcpu_alloc_info allocated in setup_per_cpu_areas(). And to give it a chance of being reused by the page allocator later, align it to a page boundary just like its size.

---
 mm/percpu.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
mm/percpu.c +2 -1
@@ -1856,7 +1856,7 @@ struct pcpu_alloc_info * __init pcpu_all
 			  __alignof__(ai->groups[0].cpu_map[0]));
 	ai_size = base_size + nr_units * sizeof(ai->groups[0].cpu_map[0]);
 
-	ptr = memblock_virt_alloc_nopanic(PFN_ALIGN(ai_size), 0);
+	ptr = memblock_virt_alloc_nopanic(PFN_ALIGN(ai_size), PAGE_SIZE);
 	if (!ptr)
 		return NULL;
 	ai = ptr;
@@ -2719,6 +2719,7 @@ void __init setup_per_cpu_areas(void)
 
 	if (pcpu_setup_first_chunk(ai, fc) < 0)
 		panic("Failed to initialize percpu areas.");
+	pcpu_free_alloc_info(ai);
 }
 
 #endif	/* CONFIG_SMP */

Patches currently in stable-queue which might be from [email protected] are

queue-4.14/percpu-don-t-forget-to-free-the-temporary-struct-pcpu_alloc_info.patch

#1 lore raw
Quoted 6 lines · On Wed, 20 Dec 2017, [email protected] wrote:

This is a note to let you know that I've just added the patch titled

percpu: don't forget to free the temporary struct pcpu_alloc_info
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

Quoted 6 lines

The filename of the patch is:
percpu-don-t-forget-to-free-the-temporary-struct-pcpu_alloc_info.patch
and it can be found in the queue-4.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

If you consider this patch worthy enough for the stable tree, then you should also pick commit abee210500ed otherwise the CRIS architecture will regress.

Quoted 49 lines

From foo@baz Wed Dec 20 18:17:52 CET 2017
From: Nicolas Pitre <[email protected]>
Date: Tue, 3 Oct 2017 18:29:49 -0400
Subject: percpu: don't forget to free the temporary struct pcpu_alloc_info

From: Nicolas Pitre <[email protected]>

[ Upstream commit 438a50618095061920d3a30d4c5ca1ef2e0ff860 ]

Unlike the SMP case, the !SMP case does not free the memory for struct pcpu_alloc_info allocated in setup_per_cpu_areas(). And to give it a chance of being reused by the page allocator later, align it to a page boundary just like its size.

---
 mm/percpu.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
mm/percpu.c +2 -1
@@ -1856,7 +1856,7 @@ struct pcpu_alloc_info * __init pcpu_all
 			  __alignof__(ai->groups[0].cpu_map[0]));
 	ai_size = base_size + nr_units * sizeof(ai->groups[0].cpu_map[0]);
 
-	ptr = memblock_virt_alloc_nopanic(PFN_ALIGN(ai_size), 0);
+	ptr = memblock_virt_alloc_nopanic(PFN_ALIGN(ai_size), PAGE_SIZE);
 	if (!ptr)
 		return NULL;
 	ai = ptr;
@@ -2719,6 +2719,7 @@ void __init setup_per_cpu_areas(void)
 
 	if (pcpu_setup_first_chunk(ai, fc) < 0)
 		panic("Failed to initialize percpu areas.");
+	pcpu_free_alloc_info(ai);
 }
 
 #endif	/* CONFIG_SMP */

Patches currently in stable-queue which might be from [email protected] are

queue-4.14/percpu-don-t-forget-to-free-the-temporary-struct-pcpu_alloc_info.patch

#2 lore raw
Quoted 12 lines · Nicolas Pitre
Quoted 10 lines · On Wed, 20 Dec 2017, [email protected] wrote:

This is a note to let you know that I've just added the patch titled

percpu: don't forget to free the temporary struct pcpu_alloc_info
to the 4.14-stable tree which can be found at:
https://urldefense.proofpoint.com/v2/url?u=http-3A__www.kernel.org_git_-3Fp-3Dlinux_kernel_git_stable_stable-2Dqueue.git-3Ba-3Dsummary&d=DwIBAg&c=udBTRvFvXC5Dhqg7UHpJlPps3mZ3LRxpb6__0PomBTQ&r=bUtaaC9mlBij4OjEG_D-KPul_335azYzfC4Rjgomobo&m=qnNDf4IeHRQ_ffqQXDeVcI9CCT5Pq7EmTmp5xbKWg-I&s=KgCwQ9E3kx6oTOuZ75TsmUM6dqxn_zrSgFwENCasLi8&e=

The filename of the patch is:
percpu-don-t-forget-to-free-the-temporary-struct-pcpu_alloc_info.patch
and it can be found in the queue-4.14 subdirectory.

Quoted 6 lines
Quoted 2 lines

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

If you consider this patch worthy enough for the stable tree, then you should also pick commit abee210500ed otherwise the CRIS architecture will regress.

In this case I'd rather just drop this commit, at least until this issue is fixed (rather than ducttaped) upstream. Thanks Nicolas!

Signature · 2 lines
Thanks,
Sasha
author maintainer
#3 lore raw
In reply to Nicolas Pitre
Quoted 12 lines · Nicolas Pitre
Quoted 10 lines · On Wed, 20 Dec 2017, [email protected] wrote:

This is a note to let you know that I've just added the patch titled

percpu: don't forget to free the temporary struct pcpu_alloc_info
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
percpu-don-t-forget-to-free-the-temporary-struct-pcpu_alloc_info.patch
and it can be found in the queue-4.14 subdirectory.

Quoted 6 lines
Quoted 2 lines

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

If you consider this patch worthy enough for the stable tree, then you should also pick commit abee210500ed otherwise the CRIS architecture will regress.

Sadly, CRIS is dead, but yeah, it's not good to kill it earlier than expected :)

I'll take Sasha's patch to drop this, thanks.

greg k-h

#4 lore raw
Quoted 6 lines · Greg KH
Quoted 5 lines · Nicolas Pitre
Quoted 2 lines · On Wed, 20 Dec 2017, [email protected] wrote:

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 6 lines
Quoted 3 lines

If you consider this patch worthy enough for the stable tree, then you should also pick commit abee210500ed otherwise the CRIS architecture will regress.

Sadly, CRIS is dead, but yeah, it's not good to kill it earlier than expected :)

Well, some people noticed soon enough after this patch hit mainline that their CRIS setup didn't boot any longer. A good way to know if some architecture is really dead is to break it! ;-)

Nicolas