powerpc: Randomise PIEs
Randomise ELF_ET_DYN_BASE, which is used when loading position independent executables. Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
		
					parent
					
						
							
								002b0ec73d
							
						
					
				
			
			
				commit
				
					
						501cb16d3c
					
				
			
		
					 2 changed files with 12 additions and 1 deletions
				
			
		|  | @ -179,7 +179,8 @@ typedef elf_fpreg_t elf_vsrreghalf_t32[ELF_NVSRHALFREG]; | ||||||
|    the loader.  We need to make sure that it is out of the way of the program |    the loader.  We need to make sure that it is out of the way of the program | ||||||
|    that it will "exec", and that there is sufficient room for the brk.  */ |    that it will "exec", and that there is sufficient room for the brk.  */ | ||||||
| 
 | 
 | ||||||
| #define ELF_ET_DYN_BASE         (0x20000000) | extern unsigned long randomize_et_dyn(unsigned long base); | ||||||
|  | #define ELF_ET_DYN_BASE		(randomize_et_dyn(0x20000000)) | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  * Our registers are always unsigned longs, whether we're a 32 bit |  * Our registers are always unsigned longs, whether we're a 32 bit | ||||||
|  |  | ||||||
|  | @ -1170,3 +1170,13 @@ unsigned long arch_randomize_brk(struct mm_struct *mm) | ||||||
| 
 | 
 | ||||||
| 	return ret; | 	return ret; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | unsigned long randomize_et_dyn(unsigned long base) | ||||||
|  | { | ||||||
|  | 	unsigned long ret = PAGE_ALIGN(base + brk_rnd()); | ||||||
|  | 
 | ||||||
|  | 	if (ret < base) | ||||||
|  | 		return base; | ||||||
|  | 
 | ||||||
|  | 	return ret; | ||||||
|  | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Anton Blanchard
				Anton Blanchard