diff options
Diffstat (limited to 'arch/sparc/kernel/module.c')
| -rw-r--r-- | arch/sparc/kernel/module.c | 13 | 
1 files changed, 5 insertions, 8 deletions
diff --git a/arch/sparc/kernel/module.c b/arch/sparc/kernel/module.c index 15e0a169397..f1ddc0d2367 100644 --- a/arch/sparc/kernel/module.c +++ b/arch/sparc/kernel/module.c @@ -48,9 +48,7 @@ void *module_alloc(unsigned long size)  		return NULL;  	ret = module_map(size); -	if (!ret) -		ret = ERR_PTR(-ENOMEM); -	else +	if (ret)  		memset(ret, 0, size);  	return ret; @@ -116,6 +114,10 @@ int apply_relocate_add(Elf_Shdr *sechdrs,  		v = sym->st_value + rel[i].r_addend;  		switch (ELF_R_TYPE(rel[i].r_info) & 0xff) { +		case R_SPARC_DISP32: +			v -= (Elf_Addr) location; +			*loc32 = v; +			break;  #ifdef CONFIG_SPARC64  		case R_SPARC_64:  			location[0] = v >> 56; @@ -128,11 +130,6 @@ int apply_relocate_add(Elf_Shdr *sechdrs,  			location[7] = v >>  0;  			break; -		case R_SPARC_DISP32: -			v -= (Elf_Addr) location; -			*loc32 = v; -			break; -  		case R_SPARC_WDISP19:  			v -= (Elf_Addr) location;  			*loc32 = (*loc32 & ~0x7ffff) |  |