diff options
Diffstat (limited to 'arch/sparc/kernel')
| -rw-r--r-- | arch/sparc/kernel/module.c | 30 | ||||
| -rw-r--r-- | arch/sparc/kernel/sys_sparc_32.c | 3 | ||||
| -rw-r--r-- | arch/sparc/kernel/sys_sparc_64.c | 20 | 
3 files changed, 9 insertions, 44 deletions
diff --git a/arch/sparc/kernel/module.c b/arch/sparc/kernel/module.c index 66c45a2764bc..b8c51cc23d96 100644 --- a/arch/sparc/kernel/module.c +++ b/arch/sparc/kernel/module.c @@ -21,36 +21,6 @@  #include "entry.h" -#ifdef CONFIG_SPARC64 - -#include <linux/jump_label.h> - -static void *module_map(unsigned long size) -{ -	if (PAGE_ALIGN(size) > MODULES_LEN) -		return NULL; -	return __vmalloc_node_range(size, 1, MODULES_VADDR, MODULES_END, -				GFP_KERNEL, PAGE_KERNEL, 0, NUMA_NO_NODE, -				__builtin_return_address(0)); -} -#else -static void *module_map(unsigned long size) -{ -	return vmalloc(size); -} -#endif /* CONFIG_SPARC64 */ - -void *module_alloc(unsigned long size) -{ -	void *ret; - -	ret = module_map(size); -	if (ret) -		memset(ret, 0, size); - -	return ret; -} -  /* Make generic code ignore STT_REGISTER dummy undefined symbols.  */  int module_frob_arch_sections(Elf_Ehdr *hdr,  			      Elf_Shdr *sechdrs, diff --git a/arch/sparc/kernel/sys_sparc_32.c b/arch/sparc/kernel/sys_sparc_32.c index 082a551897ed..08a19727795c 100644 --- a/arch/sparc/kernel/sys_sparc_32.c +++ b/arch/sparc/kernel/sys_sparc_32.c @@ -41,7 +41,7 @@ SYSCALL_DEFINE0(getpagesize)  unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags)  { -	struct vm_unmapped_area_info info; +	struct vm_unmapped_area_info info = {};  	if (flags & MAP_FIXED) {  		/* We do not accept a shared mapping if it would violate @@ -59,7 +59,6 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi  	if (!addr)  		addr = TASK_UNMAPPED_BASE; -	info.flags = 0;  	info.length = len;  	info.low_limit = addr;  	info.high_limit = TASK_SIZE; diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c index 1e9a9e016237..d9c3b34ca744 100644 --- a/arch/sparc/kernel/sys_sparc_64.c +++ b/arch/sparc/kernel/sys_sparc_64.c @@ -93,7 +93,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi  	struct vm_area_struct * vma;  	unsigned long task_size = TASK_SIZE;  	int do_color_align; -	struct vm_unmapped_area_info info; +	struct vm_unmapped_area_info info = {};  	if (flags & MAP_FIXED) {  		/* We do not accept a shared mapping if it would violate @@ -126,7 +126,6 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi  			return addr;  	} -	info.flags = 0;  	info.length = len;  	info.low_limit = TASK_UNMAPPED_BASE;  	info.high_limit = min(task_size, VA_EXCLUDE_START); @@ -154,7 +153,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,  	unsigned long task_size = STACK_TOP32;  	unsigned long addr = addr0;  	int do_color_align; -	struct vm_unmapped_area_info info; +	struct vm_unmapped_area_info info = {};  	/* This should only ever run for 32-bit processes.  */  	BUG_ON(!test_thread_flag(TIF_32BIT)); @@ -218,14 +217,10 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,  unsigned long get_fb_unmapped_area(struct file *filp, unsigned long orig_addr, unsigned long len, unsigned long pgoff, unsigned long flags)  {  	unsigned long align_goal, addr = -ENOMEM; -	unsigned long (*get_area)(struct file *, unsigned long, -				  unsigned long, unsigned long, unsigned long); - -	get_area = current->mm->get_unmapped_area;  	if (flags & MAP_FIXED) {  		/* Ok, don't mess with it. */ -		return get_area(NULL, orig_addr, len, pgoff, flags); +		return mm_get_unmapped_area(current->mm, NULL, orig_addr, len, pgoff, flags);  	}  	flags &= ~MAP_SHARED; @@ -238,7 +233,8 @@ unsigned long get_fb_unmapped_area(struct file *filp, unsigned long orig_addr, u  		align_goal = (64UL * 1024);  	do { -		addr = get_area(NULL, orig_addr, len + (align_goal - PAGE_SIZE), pgoff, flags); +		addr = mm_get_unmapped_area(current->mm, NULL, orig_addr, +					    len + (align_goal - PAGE_SIZE), pgoff, flags);  		if (!(addr & ~PAGE_MASK)) {  			addr = (addr + (align_goal - 1UL)) & ~(align_goal - 1UL);  			break; @@ -256,7 +252,7 @@ unsigned long get_fb_unmapped_area(struct file *filp, unsigned long orig_addr, u  	 * be obtained.  	 */  	if (addr & ~PAGE_MASK) -		addr = get_area(NULL, orig_addr, len, pgoff, flags); +		addr = mm_get_unmapped_area(current->mm, NULL, orig_addr, len, pgoff, flags);  	return addr;  } @@ -292,7 +288,7 @@ void arch_pick_mmap_layout(struct mm_struct *mm, struct rlimit *rlim_stack)  	    gap == RLIM_INFINITY ||  	    sysctl_legacy_va_layout) {  		mm->mmap_base = TASK_UNMAPPED_BASE + random_factor; -		mm->get_unmapped_area = arch_get_unmapped_area; +		clear_bit(MMF_TOPDOWN, &mm->flags);  	} else {  		/* We know it's 32-bit */  		unsigned long task_size = STACK_TOP32; @@ -303,7 +299,7 @@ void arch_pick_mmap_layout(struct mm_struct *mm, struct rlimit *rlim_stack)  			gap = (task_size / 6 * 5);  		mm->mmap_base = PAGE_ALIGN(task_size - gap - random_factor); -		mm->get_unmapped_area = arch_get_unmapped_area_topdown; +		set_bit(MMF_TOPDOWN, &mm->flags);  	}  }  |