use more usermode macro
PATCH 6/6 use more usermode macro
Hi,
The following patch make use of the user_mode macro where it's possible. This is useful for Xen because it will need only to redefine only the macro to a hypervisor call.
Please apply, or comments.
Signed-off-by Vincent Hanquez <[email protected]>
arch/x86_64/kernel/signal.c +1 -1
@@ -416,7 +416,7 @@* kernel mode. Just return without doing anything * if so. */ -if ((regs->cs &3 ) !=3 ) +if (!user_mode (regs))return 1 ;if (try_to_freeze (0 ))
arch/x86_64/kernel/traps.c +9 -9
@@ -274,7 +274,7 @@void show_registers (struct pt_regs *regs) {int i; -int in_kernel = (regs->cs &3 ) ==0 ; +int in_kernel = !user_mode (regs);unsigned long rsp;const int cpu =safe_smp_processor_id ();struct task_struct *cur = cpu_pda[cpu].pcurrent;
@@ -318,7 +318,7 @@struct bug_frame f;char tmp; -if (regs->cs &3 ) +if (user_mode (regs))return ;if (__copy_from_user (&f, (struct bug_frame *) regs->rip,sizeof (struct bug_frame )))
@@ -435,7 +435,7 @@ }#endif -if ((regs->cs &3 ) !=0 ) { +if (user_mode (regs)) {struct task_struct *tsk = current;if (exception_trace &&unhandled_signal (tsk, signr))
@@ -520,7 +520,7 @@ }#endif -if ((regs->cs &3 )!=0 ) { +if (user_mode (regs)) {struct task_struct *tsk = current;if (exception_trace &&unhandled_signal (tsk,SIGSEGV ))
@@ -636,7 +636,7 @@if (eregs == (struct pt_regs *)eregs->rsp) ;/* Exception from user space */ -else if (eregs->cs &3 ) +else if (user_mode (eregs)) regs = ((struct pt_regs *)current->thread.rsp0) -1 ;/* Exception from kernel and interrupts are enabled. Move to kernel process stack. */
@@ -695,7 +695,7 @@* allowing programs to debug themselves without the ptrace() * interface. */ -if ((regs->cs &3 ) ==0 ) +if (!user_mode (regs)) goto clear_TF_reenable;/* * Was the TF flag set by a debugger? If so, clear it now,
@@ -713,7 +713,7 @@ info.si_signo =SIGTRAP ; info.si_errno =0 ; info.si_code =TRAP_BRKPT ; -if ((regs->cs &3 ) ==0 ) +if (!user_mode (regs)) goto clear_dr7; info.si_addr = (void __user *)regs->rip;
@@ -754,7 +754,7 @@unsigned short cwd, swd;conditional_sti (regs); -if ((regs->cs &3 ) ==0 && +if (!user_mode (regs) &&kernel_math_error (regs,"kernel x87 math error" ))return ;
@@ -820,7 +820,7 @@unsigned short mxcsr;conditional_sti (regs); -if ((regs->cs &3 ) ==0 && +if (!user_mode (regs) &&kernel_math_error (regs,"kernel simd math error" ))return ;
arch/x86_64/mm/fault.c +2 -2
@@ -74,7 +74,7 @@ instr = (unsigned char *)convert_rip_to_linear (current, regs); max_instr = instr +15 ; -if ((regs->cs &3 ) !=0 && instr >= (unsigned char *)TASK_SIZE ) +if (user_mode (regs) && instr >= (unsigned char *)TASK_SIZE )return 0 ;while (scan_more && instr < max_instr) {
@@ -106,7 +106,7 @@/* Could check the LDT for lm, but for now it's good enough to assume that long mode only uses well known segments or kernel. */ - scan_more = ((regs->cs &3 ) ==0 ) || (regs->cs == __USER_CS); + scan_more = (!user_mode (regs)) || (regs->cs == __USER_CS);break ;case 0x60 :
Quoted 7 lines · Vincent Hanquez
Hi,
The following patch make use of the
user_modemacro where it's possible. This is useful for Xen because it will need only to redefine only the macro to a hypervisor call.Please apply, or comments.
Thanks looks good.
-Andi