Subject: Re: linux-next: manual merge of the memblock tree with the origin tree

From: Mike Rapoport <[email-masked]>
Date: Mon, 24 Jun 2024 08:53:27 +0300

Hi,

On Fri, Jun 21, 2024 at 09:30:51PM +0100, Mark Brown wrote:
> On Fri, Jun 21, 2024 at 08:08:53PM +0000, Gowans, James wrote:
> > On Thu, 2024-06-20 at 19:00 +0100, Mark Brown wrote:
> 
> > > Yes, the merge in -next is wrong.
> 
> > What's the next step to fix the incorrect merge commit?
> > Looking at today's -next I see the same issue:
> > https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/mm/memblock.c?h=next-20240621&id=f689ee4c062317a0831fbffeeb30d7816608b2e7
> 
> It's remembered by rerere, hopefully I'll convince rerere to forget it
> on Monday.

Just in case this is the resolution for merge conflict

diff --cc mm/memblock.c
index e81fb68f7f88,692dc551c0fd..000000000000
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@@ -1441,6 -1446,20 +1439,17 @@@ phys_addr_t __init memblock_alloc_range
  	enum memblock_flags flags = choose_memblock_flags();
  	phys_addr_t found;
  
 -	if (WARN_ONCE(nid == MAX_NUMNODES, "Usage of MAX_NUMNODES is deprecated. Use NUMA_NO_NODE instead\n"))
 -		nid = NUMA_NO_NODE;
 -
+ 	/*
+ 	 * Detect any accidental use of these APIs after slab is ready, as at
+ 	 * this moment memblock may be deinitialized already and its
+ 	 * internal data may be destroyed (after execution of memblock_free_all)
+ 	 */
+ 	if (WARN_ON_ONCE(slab_is_available())) {
+ 		void *vaddr = kzalloc_node(size, GFP_NOWAIT, nid);
+ 
+ 		return vaddr ? virt_to_phys(vaddr) : 0;
+ 	}
+ 
  	if (!align) {
  		/* Can't use WARNs this early in boot on powerpc */
  		dump_stack();

-- 
Sincerely yours,
Mike.