Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 76381fee authored by Vincent Hanquez's avatar Vincent Hanquez Committed by Linus Torvalds
Browse files

[PATCH] xen: x86_64: use more usermode macro



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: default avatarVincent 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: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent e9129e56
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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))
+9 −9
Original line number Diff line number Diff line
@@ -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; 
@@ -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)))
@@ -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))
@@ -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))
@@ -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. */
@@ -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,
@@ -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;
@@ -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;

@@ -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;

+2 −2
Original line number Diff line number Diff line
@@ -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) { 
@@ -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: