Skip to content

Commit

Permalink
[PATCH] xen: x86_64: use more usermode macro
Browse files Browse the repository at this point in the history
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.

Signed-off-by: Vincent Hanquez <vincent.hanquez@cl.cam.ac.uk>
Cc: Ian Pratt <m+Ian.Pratt@cl.cam.ac.uk>
Cc: Andi Kleen <ak@muc.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Vincent Hanquez authored and Linus Torvalds committed Jun 23, 2005
1 parent e9129e5 commit 76381fe
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 12 deletions.
2 changes: 1 addition & 1 deletion arch/x86_64/kernel/signal.c
Original file line number Diff line number Diff line change
Expand Up @@ -422,7 +422,7 @@ int do_signal(struct pt_regs *regs, sigset_t *oldset)
* 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))
Expand Down
18 changes: 9 additions & 9 deletions arch/x86_64/kernel/traps.c
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ EXPORT_SYMBOL(dump_stack);
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;
Expand Down Expand Up @@ -318,7 +318,7 @@ void handle_BUG(struct pt_regs *regs)
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)))
Expand Down Expand Up @@ -437,7 +437,7 @@ static void do_trap(int trapnr, int signr, char *str,
}
#endif

if ((regs->cs & 3) != 0) {
if (user_mode(regs)) {
struct task_struct *tsk = current;

if (exception_trace && unhandled_signal(tsk, signr))
Expand Down Expand Up @@ -522,7 +522,7 @@ asmlinkage void do_general_protection(struct pt_regs * regs, long error_code)
}
#endif

if ((regs->cs & 3)!=0) {
if (user_mode(regs)) {
struct task_struct *tsk = current;

if (exception_trace && unhandled_signal(tsk, SIGSEGV))
Expand Down Expand Up @@ -638,7 +638,7 @@ asmlinkage struct pt_regs *sync_regs(struct pt_regs *eregs)
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. */
Expand Down Expand Up @@ -697,7 +697,7 @@ asmlinkage void do_debug(struct pt_regs * regs, unsigned long error_code)
* 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,
Expand All @@ -715,7 +715,7 @@ asmlinkage void do_debug(struct pt_regs * regs, unsigned long error_code)
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;
Expand Down Expand Up @@ -756,7 +756,7 @@ asmlinkage void do_coprocessor_error(struct pt_regs *regs)
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;

Expand Down Expand Up @@ -822,7 +822,7 @@ asmlinkage void do_simd_coprocessor_error(struct pt_regs *regs)
unsigned short mxcsr;

conditional_sti(regs);
if ((regs->cs & 3) == 0 &&
if (!user_mode(regs) &&
kernel_math_error(regs, "kernel simd math error"))
return;

Expand Down
4 changes: 2 additions & 2 deletions arch/x86_64/mm/fault.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ static noinline int is_prefetch(struct pt_regs *regs, unsigned long addr,
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) {
Expand Down Expand Up @@ -106,7 +106,7 @@ static noinline int is_prefetch(struct pt_regs *regs, unsigned long addr,
/* 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:
Expand Down

0 comments on commit 76381fe

Please sign in to comment.