2008-12-15 16:57:23

by Jaswinder Singh Rajput

[permalink] [raw]
Subject: [PATCH] x86: traps.c declare functions before they get used

Signed-off-by: Jaswinder Singh <[email protected]>

In asm/traps.h :-
do_double_fault : added under X86_64
sync_regs : added under X86_64
math_error : moved out from X86_32 as it is common for both 32 and 64 bit
smp_thermal_interrupt : added under X86_64
mce_threshold_interrupt : added under X86_64
math_emulate : moved from X86_32 to MATH_EMULATION
---
arch/x86/include/asm/traps.h | 11 ++++++++++-
1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/arch/x86/include/asm/traps.h b/arch/x86/include/asm/traps.h
index 45dee28..d8a201b 100644
--- a/arch/x86/include/asm/traps.h
+++ b/arch/x86/include/asm/traps.h
@@ -46,6 +46,10 @@ dotraplinkage void do_coprocessor_segment_overrun(struct pt_regs *, long);
dotraplinkage void do_invalid_TSS(struct pt_regs *, long);
dotraplinkage void do_segment_not_present(struct pt_regs *, long);
dotraplinkage void do_stack_segment(struct pt_regs *, long);
+#ifdef CONFIG_X86_64
+dotraplinkage void do_double_fault(struct pt_regs *, long);
+asmlinkage __kprobes struct pt_regs *sync_regs(struct pt_regs *);
+#endif
dotraplinkage void do_general_protection(struct pt_regs *, long);
dotraplinkage void do_page_fault(struct pt_regs *, unsigned long);
dotraplinkage void do_spurious_interrupt_bug(struct pt_regs *, long);
@@ -72,9 +76,14 @@ static inline int get_si_code(unsigned long condition)
extern int panic_on_unrecovered_nmi;
extern int kstack_depth_to_print;

-#ifdef CONFIG_X86_32
void math_error(void __user *);
+#ifdef CONFIG_X86_32
unsigned long patch_espfix_desc(unsigned long, unsigned long);
+#else
+asmlinkage void smp_thermal_interrupt(void);
+asmlinkage void mce_threshold_interrupt(void);
+#endif
+#ifndef CONFIG_MATH_EMULATION
asmlinkage void math_emulate(long);
#endif

--
1.5.5.1



2008-12-16 20:24:42

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] x86: traps.c declare functions before they get used


* Jaswinder Singh <[email protected]> wrote:

> Signed-off-by: Jaswinder Singh <[email protected]>
>
> In asm/traps.h :-
> do_double_fault : added under X86_64
> sync_regs : added under X86_64
> math_error : moved out from X86_32 as it is common for both 32 and 64 bit
> smp_thermal_interrupt : added under X86_64
> mce_threshold_interrupt : added under X86_64
> math_emulate : moved from X86_32 to MATH_EMULATION
> ---
> arch/x86/include/asm/traps.h | 11 ++++++++++-
> 1 files changed, 10 insertions(+), 1 deletions(-)
>
> diff --git a/arch/x86/include/asm/traps.h b/arch/x86/include/asm/traps.h
> index 45dee28..d8a201b 100644
> --- a/arch/x86/include/asm/traps.h
> +++ b/arch/x86/include/asm/traps.h
> @@ -46,6 +46,10 @@ dotraplinkage void do_coprocessor_segment_overrun(struct pt_regs *, long);
> dotraplinkage void do_invalid_TSS(struct pt_regs *, long);
> dotraplinkage void do_segment_not_present(struct pt_regs *, long);
> dotraplinkage void do_stack_segment(struct pt_regs *, long);
> +#ifdef CONFIG_X86_64
> +dotraplinkage void do_double_fault(struct pt_regs *, long);
> +asmlinkage __kprobes struct pt_regs *sync_regs(struct pt_regs *);
> +#endif
> dotraplinkage void do_general_protection(struct pt_regs *, long);
> dotraplinkage void do_page_fault(struct pt_regs *, unsigned long);
> dotraplinkage void do_spurious_interrupt_bug(struct pt_regs *, long);
> @@ -72,9 +76,14 @@ static inline int get_si_code(unsigned long condition)
> extern int panic_on_unrecovered_nmi;
> extern int kstack_depth_to_print;
>
> -#ifdef CONFIG_X86_32
> void math_error(void __user *);
> +#ifdef CONFIG_X86_32
> unsigned long patch_espfix_desc(unsigned long, unsigned long);
> +#else
> +asmlinkage void smp_thermal_interrupt(void);
> +asmlinkage void mce_threshold_interrupt(void);
> +#endif
> +#ifndef CONFIG_MATH_EMULATION
> asmlinkage void math_emulate(long);
> #endif

uhm, shouldnt that #ifndef CONFIG_MATH_EMULATION be #ifdef
CONFIG_MATH_EMULATION?

Ingo

2008-12-17 04:28:59

by Jaswinder Singh

[permalink] [raw]
Subject: Re: [PATCH] x86: traps.c declare functions before they get used

Hello Ingo,

On Wed, Dec 17, 2008 at 1:49 AM, Ingo Molnar <[email protected]> wrote:
>> +#ifndef CONFIG_MATH_EMULATION
>> asmlinkage void math_emulate(long);
>> #endif
>
> uhm, shouldnt that #ifndef CONFIG_MATH_EMULATION be #ifdef
> CONFIG_MATH_EMULATION?
>

Sorry, but it seems correct to me in traps case will be opposite.

If someone tries to access math_emulate() and MATH_EMULATION is not
defined then he will be trapped ;-)

Thank you,

Jaswinder Singh.

2008-12-18 14:34:13

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] x86: traps.c declare functions before they get used


* Jaswinder Singh <[email protected]> wrote:

> Hello Ingo,
>
> On Wed, Dec 17, 2008 at 1:49 AM, Ingo Molnar <[email protected]> wrote:
> >> +#ifndef CONFIG_MATH_EMULATION
> >> asmlinkage void math_emulate(long);
> >> #endif
> >
> > uhm, shouldnt that #ifndef CONFIG_MATH_EMULATION be #ifdef
> > CONFIG_MATH_EMULATION?
> >
>
> Sorry, but it seems correct to me in traps case will be opposite.
>
> If someone tries to access math_emulate() and MATH_EMULATION is not
> defined then he will be trapped ;-)

you should build-test your patch with MATH_EMULATION enabled.

Ingo

2008-12-18 18:35:51

by Jaswinder Singh Rajput

[permalink] [raw]
Subject: Re: [PATCH] x86: traps.c declare functions before they get used

On Thu, 2008-12-18 at 15:33 +0100, Ingo Molnar wrote:

> you should build-test your patch with MATH_EMULATION enabled.
>

I am sorry for this mess. Now I tested on X86_32 with and without
MATH_EMULATION and also in X86_64. So here is new patch :

Subject: [PATCH] 86: traps.c declare functions before they get used

Impact: cleanup

In asm/traps.h :-
do_double_fault : added under X86_64
sync_regs : added under X86_64
math_error : moved out from X86_32 as it is common for both 32 and 64 bit
math_emulate : moved from X86_32 as it is common for both 32 and 64 bit
smp_thermal_interrupt : added under X86_64
mce_threshold_interrupt : added under X86_64

Signed-off-by: Jaswinder Singh <[email protected]>
---
arch/x86/include/asm/traps.h | 11 +++++++++--
1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/arch/x86/include/asm/traps.h b/arch/x86/include/asm/traps.h
index 45dee28..2ee0a3b 100644
--- a/arch/x86/include/asm/traps.h
+++ b/arch/x86/include/asm/traps.h
@@ -46,6 +46,10 @@ dotraplinkage void do_coprocessor_segment_overrun(struct pt_regs *, long);
dotraplinkage void do_invalid_TSS(struct pt_regs *, long);
dotraplinkage void do_segment_not_present(struct pt_regs *, long);
dotraplinkage void do_stack_segment(struct pt_regs *, long);
+#ifdef CONFIG_X86_64
+dotraplinkage void do_double_fault(struct pt_regs *, long);
+asmlinkage __kprobes struct pt_regs *sync_regs(struct pt_regs *);
+#endif
dotraplinkage void do_general_protection(struct pt_regs *, long);
dotraplinkage void do_page_fault(struct pt_regs *, unsigned long);
dotraplinkage void do_spurious_interrupt_bug(struct pt_regs *, long);
@@ -72,10 +76,13 @@ static inline int get_si_code(unsigned long condition)
extern int panic_on_unrecovered_nmi;
extern int kstack_depth_to_print;

-#ifdef CONFIG_X86_32
void math_error(void __user *);
-unsigned long patch_espfix_desc(unsigned long, unsigned long);
asmlinkage void math_emulate(long);
+#ifdef CONFIG_X86_32
+unsigned long patch_espfix_desc(unsigned long, unsigned long);
+#else
+asmlinkage void smp_thermal_interrupt(void);
+asmlinkage void mce_threshold_interrupt(void);
#endif

#endif /* _ASM_X86_TRAPS_H */
--
1.5.5.1