 ac2a659968
			
		
	
	
	ac2a659968
	
	
	
		
			
			[ Spotted by Miklos ] Fix a memory leak in init_new_context. The struct page ** buffer allocated for install_special_mapping was never recorded, and thus leaked when the mm_struct was freed. Fix it by saving the pointer in mm_context_t and freeing it in arch_exit_mmap. Signed-off-by: Jeff Dike <jdike@linux.intel.com> Cc: Miklos Szeredi <miklos@szeredi.hu> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
		
			
				
	
	
		
			25 lines
		
	
	
	
		
			560 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
	
		
			560 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /* 
 | |
|  * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
 | |
|  * Licensed under the GPL
 | |
|  */
 | |
| 
 | |
| #ifndef __ARCH_UM_MMU_H
 | |
| #define __ARCH_UM_MMU_H
 | |
| 
 | |
| #include "uml-config.h"
 | |
| #include "mm_id.h"
 | |
| #include "asm/ldt.h"
 | |
| 
 | |
| typedef struct mm_context {
 | |
| 	struct mm_id id;
 | |
| 	struct uml_ldt ldt;
 | |
| 	struct page **stub_pages;
 | |
| } mm_context_t;
 | |
| 
 | |
| extern void __switch_mm(struct mm_id * mm_idp);
 | |
| 
 | |
| /* Avoid tangled inclusion with asm/ldt.h */
 | |
| extern long init_new_ldt(struct mm_context *to_mm, struct mm_context *from_mm);
 | |
| extern void free_ldt(struct mm_context *mm);
 | |
| 
 | |
| #endif
 |