mm/memblock.c: avoid abuse of RED_INACTIVE
RED_INACTIVE is a slab thing, and reusing it for memblock was
inappropriate, because memblock is dealing with phys_addr_t's which have a
Kconfigurable sizeof().
Create a new poison type for this application.  Fixes the sparse warning
    warning: cast truncates bits from constant value (9f911029d74e35b becomes 9d74e35b)
Reported-by: H Hartley Sweeten <hartleys@visionengravers.com>
Tested-by: H Hartley Sweeten <hartleys@visionengravers.com>
Acked-by: Pekka Enberg <penberg@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
	
	
This commit is contained in:
		
					parent
					
						
							
								be8f684d73
							
						
					
				
			
			
				commit
				
					
						c9d8c3d089
					
				
			
		
					 2 changed files with 10 additions and 4 deletions
				
			
		| 
						 | 
					@ -40,6 +40,12 @@
 | 
				
			||||||
#define	RED_INACTIVE	0x09F911029D74E35BULL	/* when obj is inactive */
 | 
					#define	RED_INACTIVE	0x09F911029D74E35BULL	/* when obj is inactive */
 | 
				
			||||||
#define	RED_ACTIVE	0xD84156C5635688C0ULL	/* when obj is active */
 | 
					#define	RED_ACTIVE	0xD84156C5635688C0ULL	/* when obj is active */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef CONFIG_PHYS_ADDR_T_64BIT
 | 
				
			||||||
 | 
					#define MEMBLOCK_INACTIVE	0x3a84fb0144c9e71bULL
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#define MEMBLOCK_INACTIVE	0x44c9e71bUL
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define SLUB_RED_INACTIVE	0xbb
 | 
					#define SLUB_RED_INACTIVE	0xbb
 | 
				
			||||||
#define SLUB_RED_ACTIVE		0xcc
 | 
					#define SLUB_RED_ACTIVE		0xcc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -758,9 +758,9 @@ void __init memblock_analyze(void)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Check marker in the unused last array entry */
 | 
						/* Check marker in the unused last array entry */
 | 
				
			||||||
	WARN_ON(memblock_memory_init_regions[INIT_MEMBLOCK_REGIONS].base
 | 
						WARN_ON(memblock_memory_init_regions[INIT_MEMBLOCK_REGIONS].base
 | 
				
			||||||
		!= (phys_addr_t)RED_INACTIVE);
 | 
							!= MEMBLOCK_INACTIVE);
 | 
				
			||||||
	WARN_ON(memblock_reserved_init_regions[INIT_MEMBLOCK_REGIONS].base
 | 
						WARN_ON(memblock_reserved_init_regions[INIT_MEMBLOCK_REGIONS].base
 | 
				
			||||||
		!= (phys_addr_t)RED_INACTIVE);
 | 
							!= MEMBLOCK_INACTIVE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	memblock.memory_size = 0;
 | 
						memblock.memory_size = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -786,8 +786,8 @@ void __init memblock_init(void)
 | 
				
			||||||
	memblock.reserved.max	= INIT_MEMBLOCK_REGIONS;
 | 
						memblock.reserved.max	= INIT_MEMBLOCK_REGIONS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Write a marker in the unused last array entry */
 | 
						/* Write a marker in the unused last array entry */
 | 
				
			||||||
	memblock.memory.regions[INIT_MEMBLOCK_REGIONS].base = (phys_addr_t)RED_INACTIVE;
 | 
						memblock.memory.regions[INIT_MEMBLOCK_REGIONS].base = MEMBLOCK_INACTIVE;
 | 
				
			||||||
	memblock.reserved.regions[INIT_MEMBLOCK_REGIONS].base = (phys_addr_t)RED_INACTIVE;
 | 
						memblock.reserved.regions[INIT_MEMBLOCK_REGIONS].base = MEMBLOCK_INACTIVE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Create a dummy zero size MEMBLOCK which will get coalesced away later.
 | 
						/* Create a dummy zero size MEMBLOCK which will get coalesced away later.
 | 
				
			||||||
	 * This simplifies the memblock_add() code below...
 | 
						 * This simplifies the memblock_add() code below...
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue