"[PATCH
Hi,
The following patch rename user_mode to user_mode_vm and add a user_mode macro similar to the x86-64 one.
This is useful for Xen because the linux xen kernel does not runs on the same priviledge that a vanilla linux kernel, and with this we just need to redefine user_mode().
Please apply, or comments.
arch/i386/kernel/apic.c +1 -1
@@ -1133,7 +1133,7 @@ }#ifdef CONFIG_SMP -update_process_times (user_mode (regs)); +update_process_times (user_mode_vm (regs));#endif }
arch/i386/kernel/ptrace.c +1 -1
@@ -667,7 +667,7 @@ info.si_code =TRAP_BRKPT ;/* User-mode eip? */ - info.si_addr =user_mode (regs) ? (void __user *) regs->eip :NULL ; + info.si_addr =user_mode_vm (regs) ? (void __user *) regs->eip :NULL ;/* Send us the fakey SIGTRAP */ force_sig_info (SIGTRAP , &info, tsk);
arch/i386/mach-voyager/voyager_smp.c +1 -1
@@ -1289,7 +1289,7 @@per_cpu (prof_counter, cpu); } -update_process_times (user_mode (regs)); +update_process_times (user_mode_vm (regs)); }if ( ((1 <<cpu) & voyager_extended_vic_processors) ==0 )
arch/i386/oprofile/backtrace.c +1 -1
@@ -91,7 +91,7 @@ head = (struct frame_head *)regs->ebp;#endif -if (!user_mode (regs)) { +if (!user_mode_vm (regs)) {while (depth-- &&valid_kernel_stack (head, regs)) head =dump_backtrace (head);return ;
include/asm-i386/ptrace.h +2 -1
@@ -57,7 +57,8 @@#ifdef __KERNEL__struct task_struct ;extern void send_sigtrap (struct task_struct *tsk,struct pt_regs *regs,int error_code); -#define user_mode (regs) ((VM_MASK & (regs)->eflags) || (3 & (regs)->xcs)) +#define user_mode (regs) (3 & (regs)->xcs) +#define user_mode_vm (regs) ((VM_MASK & (regs)->eflags) || user_mode(regs))#define instruction_pointer (regs) ((regs)->eip)#if defined(CONFIG_SMP ) && defined(CONFIG_FRAME_POINTER )extern unsigned long profile_pc (struct pt_regs *regs);
PATCH 3/6 Rename usermode macro
Hi,
The following patch rename user_mode to user_mode_vm and add a user_mode macro similar to the x86-64 one.
This is useful for Xen because the linux xen kernel does not runs on the same priviledge that a vanilla linux kernel, and with this we just need to redefine user_mode().
ignore my previous mail, really sorry for the noise.
Please apply, or comments.
arch/i386/kernel/apic.c +1 -1
@@ -1133,7 +1133,7 @@ }#ifdef CONFIG_SMP -update_process_times (user_mode (regs)); +update_process_times (user_mode_vm (regs));#endif }
arch/i386/kernel/ptrace.c +1 -1
@@ -667,7 +667,7 @@ info.si_code =TRAP_BRKPT ;/* User-mode eip? */ - info.si_addr =user_mode (regs) ? (void __user *) regs->eip :NULL ; + info.si_addr =user_mode_vm (regs) ? (void __user *) regs->eip :NULL ;/* Send us the fakey SIGTRAP */ force_sig_info (SIGTRAP , &info, tsk);
arch/i386/mach-voyager/voyager_smp.c +1 -1
@@ -1289,7 +1289,7 @@per_cpu (prof_counter, cpu); } -update_process_times (user_mode (regs)); +update_process_times (user_mode_vm (regs)); }if ( ((1 <<cpu) & voyager_extended_vic_processors) ==0 )
arch/i386/oprofile/backtrace.c +1 -1
@@ -91,7 +91,7 @@ head = (struct frame_head *)regs->ebp;#endif -if (!user_mode (regs)) { +if (!user_mode_vm (regs)) {while (depth-- &&valid_kernel_stack (head, regs)) head =dump_backtrace (head);return ;
include/asm-i386/ptrace.h +2 -1
@@ -57,7 +57,8 @@#ifdef __KERNEL__struct task_struct ;extern void send_sigtrap (struct task_struct *tsk,struct pt_regs *regs,int error_code); -#define user_mode (regs) ((VM_MASK & (regs)->eflags) || (3 & (regs)->xcs)) +#define user_mode (regs) (3 & (regs)->xcs) +#define user_mode_vm (regs) ((VM_MASK & (regs)->eflags) || user_mode(regs))#define instruction_pointer (regs) ((regs)->eip)#if defined(CONFIG_SMP ) && defined(CONFIG_FRAME_POINTER )extern unsigned long profile_pc (struct pt_regs *regs);
Re: [PATCH 3/6][XEN][x86] Rename usermode macro
Quoted 3 lines · Vincent Hanquez
The following patch rename
user_modetouser_mode_vmand add auser_modemacro
similar to the x86-64 one.
Why didn't your testing pick up the x86_64 build error?
arch/x86_64/oprofile/built-in.o(.text+0x1d09): In function `x86_backtrace':arch/x86_64/oprofile/../../i386/oprofile/backtrace.c:94: undefined reference to `user_mode_vm'
---
include/asm-x86_64/ptrace.h | 1 + 1 files changed, 1 insertion(+)
include/asm-x86_64/ptrace.h renamed from include/asm-x86_64/ptrace.h~xen-x86-rename-usermode-macro-fix +1 -0
@@ -82,6 +82,7 @@ struct pt_regs {#if defined(__KERNEL__) && !defined(__ASSEMBLY__)#define user_mode (regs) (!!((regs)->cs & 3)) +#define user_mode_vm (regs) user_mode(regs)#define instruction_pointer (regs) ((regs)->rip)extern unsigned long profile_pc (struct pt_regs *regs);void signal_fault (struct pt_regs *regs,void __user *frame,char *where);
_
Re: [PATCH 3/6][XEN][x86] Rename usermode macro
Quoted 4 lines · Andrew Morton
Why didn't your testing pick up the
x86_64build error?arch/x86_64/oprofile/built-in.o(.text+0x1d09): In function `x86_backtrace':
arch/x86_64/oprofile/../../i386/oprofile/backtrace.c:94: undefined reference to `user_mode_vm'
ouch, sorry about that.
the x86 and x86-64 patches has been compiled separately, which obviously was a wrong thing to do...
I will do a full test on x86-64 next time I'm doing such thing.
Signature · 1 line
Vincent Hanquez