 a11940978b
			
		
	
	
	a11940978b
	
	
	
		
			
			If we echo an address the hypervisor doesn't like to /sys/devices/system/memory/probe we oops the box: # echo 0x10000000000 > /sys/devices/system/memory/probe kernel BUG at arch/powerpc/mm/hash_utils_64.c:541! The backtrace is: create_section_mapping arch_add_memory add_memory memory_probe_store sysdev_class_store sysfs_write_file vfs_write SyS_write In create_section_mapping we BUG if htab_bolt_mapping returned an error. A better approach is to return an error which will propagate back to userspace. Rerunning the test with this patch applied: # echo 0x10000000000 > /sys/devices/system/memory/probe -bash: echo: write error: Invalid argument Signed-off-by: Anton Blanchard <anton@samba.org> Cc: stable@kernel.org Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
		
			
				
	
	
		
			32 lines
		
	
	
	
		
			905 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
	
		
			905 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _ASM_POWERPC_SPARSEMEM_H
 | |
| #define _ASM_POWERPC_SPARSEMEM_H 1
 | |
| #ifdef __KERNEL__
 | |
| 
 | |
| #ifdef CONFIG_SPARSEMEM
 | |
| /*
 | |
|  * SECTION_SIZE_BITS		2^N: how big each section will be
 | |
|  * MAX_PHYSADDR_BITS		2^N: how much physical address space we have
 | |
|  * MAX_PHYSMEM_BITS		2^N: how much memory we can have in that space
 | |
|  */
 | |
| #define SECTION_SIZE_BITS       24
 | |
| 
 | |
| #define MAX_PHYSADDR_BITS       44
 | |
| #define MAX_PHYSMEM_BITS        44
 | |
| 
 | |
| #endif /* CONFIG_SPARSEMEM */
 | |
| 
 | |
| #ifdef CONFIG_MEMORY_HOTPLUG
 | |
| extern int create_section_mapping(unsigned long start, unsigned long end);
 | |
| extern int remove_section_mapping(unsigned long start, unsigned long end);
 | |
| #ifdef CONFIG_NUMA
 | |
| extern int hot_add_scn_to_nid(unsigned long scn_addr);
 | |
| #else
 | |
| static inline int hot_add_scn_to_nid(unsigned long scn_addr)
 | |
| {
 | |
| 	return 0;
 | |
| }
 | |
| #endif /* CONFIG_NUMA */
 | |
| #endif /* CONFIG_MEMORY_HOTPLUG */
 | |
| 
 | |
| #endif /* __KERNEL__ */
 | |
| #endif /* _ASM_POWERPC_SPARSEMEM_H */
 |