Patchwork jump_label: Fix unaligned traps on sparc.

login
register
mail settings
Submitter David Miller
Date Oct. 23, 2010, 6:06 p.m.
Message ID <20101023.110624.226758370.davem@davemloft.net>
Download mbox | patch
Permalink /patch/69007/
State Not Applicable
Delegated to: David Miller
Headers show

Comments

David Miller - Oct. 23, 2010, 6:06 p.m.
The vmlinux.lds.h knobs to emit the __jump_table section in the main
kernel image takes care to align the section, but this doesn't help
for the __jump_table section that gets emitted into modules.

Fix the resulting lack of section alignment by explicitly specifying
it in the assembler.

Signed-off-by: David S. Miller <davem@davemloft.net>

--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Steven Rostedt - Oct. 27, 2010, 9:20 p.m.
On Sat, 2010-10-23 at 11:06 -0700, David Miller wrote:
> The vmlinux.lds.h knobs to emit the __jump_table section in the main
> kernel image takes care to align the section, but this doesn't help
> for the __jump_table section that gets emitted into modules.
> 
> Fix the resulting lack of section alignment by explicitly specifying
> it in the assembler.
> 
> Signed-off-by: David S. Miller <davem@davemloft.net>

Thanks! I'll pull this in tonight with the other jump label patches.

Unfortunately, it turns out that gcc has a bug that can cause crashes
when jump label is used. We need to set it to broken until gcc has a fix
and we can detect if the compiler has the bug or not.

-- Steve


> 
> diff --git a/arch/sparc/include/asm/jump_label.h b/arch/sparc/include/asm/jump_label.h
> index 62e66d7..d95cf44 100644
> --- a/arch/sparc/include/asm/jump_label.h
> +++ b/arch/sparc/include/asm/jump_label.h
> @@ -14,6 +14,7 @@
>  			 "nop\n\t"				\
>  			 "nop\n\t"				\
>  			 ".pushsection __jump_table,  \"a\"\n\t"\
> +			 ".align 4\n\t"				\
>  			 ".word 1b, %l[" #label "], %c0\n\t"	\
>  			 ".popsection \n\t"			\
>  			 : :  "i" (key) :  : label);\


--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/arch/sparc/include/asm/jump_label.h b/arch/sparc/include/asm/jump_label.h
index 62e66d7..d95cf44 100644
--- a/arch/sparc/include/asm/jump_label.h
+++ b/arch/sparc/include/asm/jump_label.h
@@ -14,6 +14,7 @@ 
 			 "nop\n\t"				\
 			 "nop\n\t"				\
 			 ".pushsection __jump_table,  \"a\"\n\t"\
+			 ".align 4\n\t"				\
 			 ".word 1b, %l[" #label "], %c0\n\t"	\
 			 ".popsection \n\t"			\
 			 : :  "i" (key) :  : label);\