Commit 95906b24 authored by Jeff Dike's avatar Jeff Dike Committed by Linus Torvalds

uml: style fixes in arch/um/sys-x86_64

Style fixes in arch/um/sys-x86_64:
	updated copyrights
	CodingStyle fixes
	added severities to printks which needed them

A bunch of functions in sys-*/ptrace_user.c turn out to be unused, so they and
their declarations are gone.
Signed-off-by: default avatarJeff Dike <jdike@linux.intel.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 7281ff95
/* /*
* Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com) * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
* Licensed under the GPL * Licensed under the GPL
*/ */
...@@ -10,12 +10,6 @@ ...@@ -10,12 +10,6 @@
extern int ptrace_getregs(long pid, unsigned long *regs_out); extern int ptrace_getregs(long pid, unsigned long *regs_out);
extern int ptrace_setregs(long pid, unsigned long *regs_in); extern int ptrace_setregs(long pid, unsigned long *regs_in);
extern int ptrace_getfpregs(long pid, unsigned long *regs_out);
extern int ptrace_setfpregs(long pid, unsigned long *regs);
extern void arch_enter_kernel(void *task, int pid);
extern void arch_leave_kernel(void *task, int pid);
extern void ptrace_pokeuser(unsigned long addr, unsigned long data);
/* syscall emulation path in ptrace */ /* syscall emulation path in ptrace */
...@@ -54,7 +48,8 @@ extern int sysemu_supported; ...@@ -54,7 +48,8 @@ extern int sysemu_supported;
(((int[3][3] ) { \ (((int[3][3] ) { \
{ PTRACE_SYSCALL, PTRACE_SYSCALL, PTRACE_SINGLESTEP }, \ { PTRACE_SYSCALL, PTRACE_SYSCALL, PTRACE_SINGLESTEP }, \
{ PTRACE_SYSEMU, PTRACE_SYSEMU, PTRACE_SINGLESTEP }, \ { PTRACE_SYSEMU, PTRACE_SYSEMU, PTRACE_SINGLESTEP }, \
{ PTRACE_SYSEMU, PTRACE_SYSEMU_SINGLESTEP, PTRACE_SYSEMU_SINGLESTEP }}) \ { PTRACE_SYSEMU, PTRACE_SYSEMU_SINGLESTEP, \
PTRACE_SYSEMU_SINGLESTEP } }) \
[sysemu_mode][singlestep_mode]) [sysemu_mode][singlestep_mode])
#endif #endif
...@@ -19,17 +19,3 @@ int ptrace_setregs(long pid, unsigned long *regs) ...@@ -19,17 +19,3 @@ int ptrace_setregs(long pid, unsigned long *regs)
return -errno; return -errno;
return 0; return 0;
} }
int ptrace_getfpregs(long pid, unsigned long *regs)
{
if (ptrace(PTRACE_GETFPREGS, pid, 0, regs) < 0)
return -errno;
return 0;
}
int ptrace_setfpregs(long pid, unsigned long *regs)
{
if (ptrace(PTRACE_SETFPREGS, pid, 0, regs) < 0)
return -errno;
return 0;
}
...@@ -5,7 +5,8 @@ ...@@ -5,7 +5,8 @@
#include <linux/uaccess.h> #include <linux/uaccess.h>
/* Mostly copied from i386/x86_86 - eliminated the eip < PAGE_OFFSET because /*
* Mostly copied from i386/x86_86 - eliminated the eip < PAGE_OFFSET because
* that's not relevant in skas mode. * that's not relevant in skas mode.
*/ */
......
...@@ -5,13 +5,12 @@ ...@@ -5,13 +5,12 @@
* Licensed under the GPL * Licensed under the GPL
*/ */
#define __FRAME_OFFSETS #include <linux/mm.h>
#include <asm/ptrace.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/mm.h> #define __FRAME_OFFSETS
#include <asm/ptrace.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/elf.h>
/* /*
* determines which flags the user has access to. * determines which flags the user has access to.
...@@ -24,12 +23,14 @@ int putreg(struct task_struct *child, int regno, unsigned long value) ...@@ -24,12 +23,14 @@ int putreg(struct task_struct *child, int regno, unsigned long value)
unsigned long tmp; unsigned long tmp;
#ifdef TIF_IA32 #ifdef TIF_IA32
/* Some code in the 64bit emulation may not be 64bit clean. /*
Don't take any chances. */ * Some code in the 64bit emulation may not be 64bit clean.
* Don't take any chances.
*/
if (test_tsk_thread_flag(child, TIF_IA32)) if (test_tsk_thread_flag(child, TIF_IA32))
value &= 0xffffffff; value &= 0xffffffff;
#endif #endif
switch (regno){ switch (regno) {
case FS: case FS:
case GS: case GS:
case DS: case DS:
...@@ -66,7 +67,7 @@ int poke_user(struct task_struct *child, long addr, long data) ...@@ -66,7 +67,7 @@ int poke_user(struct task_struct *child, long addr, long data)
if (addr < MAX_REG_OFFSET) if (addr < MAX_REG_OFFSET)
return putreg(child, addr, data); return putreg(child, addr, data);
else if ((addr >= offsetof(struct user, u_debugreg[0])) && else if ((addr >= offsetof(struct user, u_debugreg[0])) &&
(addr <= offsetof(struct user, u_debugreg[7]))){ (addr <= offsetof(struct user, u_debugreg[7]))) {
addr -= offsetof(struct user, u_debugreg[0]); addr -= offsetof(struct user, u_debugreg[0]);
addr = addr >> 2; addr = addr >> 2;
if ((addr == 4) || (addr == 5)) if ((addr == 4) || (addr == 5))
...@@ -108,11 +109,10 @@ int peek_user(struct task_struct *child, long addr, long data) ...@@ -108,11 +109,10 @@ int peek_user(struct task_struct *child, long addr, long data)
return -EIO; return -EIO;
tmp = 0; /* Default return condition */ tmp = 0; /* Default return condition */
if (addr < MAX_REG_OFFSET){ if (addr < MAX_REG_OFFSET)
tmp = getreg(child, addr); tmp = getreg(child, addr);
}
else if ((addr >= offsetof(struct user, u_debugreg[0])) && else if ((addr >= offsetof(struct user, u_debugreg[0])) &&
(addr <= offsetof(struct user, u_debugreg[7]))){ (addr <= offsetof(struct user, u_debugreg[7]))) {
addr -= offsetof(struct user, u_debugreg[0]); addr -= offsetof(struct user, u_debugreg[0]);
addr = addr >> 2; addr = addr >> 2;
tmp = child->thread.arch.debugregs[addr]; tmp = child->thread.arch.debugregs[addr];
...@@ -127,8 +127,9 @@ int is_syscall(unsigned long addr) ...@@ -127,8 +127,9 @@ int is_syscall(unsigned long addr)
int n; int n;
n = copy_from_user(&instr, (void __user *) addr, sizeof(instr)); n = copy_from_user(&instr, (void __user *) addr, sizeof(instr));
if (n){ if (n) {
/* access_process_vm() grants access to vsyscall and stub, /*
* access_process_vm() grants access to vsyscall and stub,
* while copy_from_user doesn't. Maybe access_process_vm is * while copy_from_user doesn't. Maybe access_process_vm is
* slow, but that doesn't matter, since it will be called only * slow, but that doesn't matter, since it will be called only
* in case of singlestepping, if copy_from_user failed. * in case of singlestepping, if copy_from_user failed.
...@@ -155,7 +156,7 @@ int get_fpregs(struct user_i387_struct __user *buf, struct task_struct *child) ...@@ -155,7 +156,7 @@ int get_fpregs(struct user_i387_struct __user *buf, struct task_struct *child)
return err; return err;
n = copy_to_user(buf, fpregs, sizeof(fpregs)); n = copy_to_user(buf, fpregs, sizeof(fpregs));
if(n > 0) if (n > 0)
return -EFAULT; return -EFAULT;
return n; return n;
......
...@@ -4,55 +4,19 @@ ...@@ -4,55 +4,19 @@
* Licensed under the GPL * Licensed under the GPL
*/ */
#include <stddef.h>
#include <errno.h> #include <errno.h>
#include "ptrace_user.h" #include "ptrace_user.h"
#include "user.h"
#include "kern_constants.h"
int ptrace_getregs(long pid, unsigned long *regs_out) int ptrace_getregs(long pid, unsigned long *regs_out)
{ {
if(ptrace(PTRACE_GETREGS, pid, 0, regs_out) < 0) if (ptrace(PTRACE_GETREGS, pid, 0, regs_out) < 0)
return(-errno); return -errno;
return(0);
}
int ptrace_setregs(long pid, unsigned long *regs)
{
if(ptrace(PTRACE_SETREGS, pid, 0, regs) < 0)
return(-errno);
return(0); return(0);
} }
int ptrace_setfpregs(long pid, unsigned long *regs) int ptrace_setregs(long pid, unsigned long *regs_out)
{ {
if (ptrace(PTRACE_SETFPREGS, pid, 0, regs) < 0) if (ptrace(PTRACE_SETREGS, pid, 0, regs_out) < 0)
return -errno; return -errno;
return 0; return(0);
}
void ptrace_pokeuser(unsigned long addr, unsigned long data)
{
panic("ptrace_pokeuser");
}
#define DS 184
#define ES 192
#define __USER_DS 0x2b
void arch_enter_kernel(void *task, int pid)
{
}
void arch_leave_kernel(void *task, int pid)
{
#ifdef UM_USER_CS
if(ptrace(PTRACE_POKEUSR, pid, CS, UM_USER_CS) < 0)
printk("POKEUSR CS failed");
#endif
if(ptrace(PTRACE_POKEUSR, pid, DS, __USER_DS) < 0)
printk("POKEUSR DS failed");
if(ptrace(PTRACE_POKEUSR, pid, ES, __USER_DS) < 0)
printk("POKEUSR ES failed");
} }
/* System call table for UML/x86-64, copied from arch/x86_64/kernel/syscall.c /*
* with some changes for UML. */ * System call table for UML/x86-64, copied from arch/x86_64/kernel/syscall.c
* with some changes for UML.
*/
#include <linux/linkage.h> #include <linux/linkage.h>
#include <linux/sys.h> #include <linux/sys.h>
...@@ -8,22 +10,26 @@ ...@@ -8,22 +10,26 @@
#define __NO_STUBS #define __NO_STUBS
/* Below you can see, in terms of #define's, the differences between the x86-64 /*
* and the UML syscall table. */ * Below you can see, in terms of #define's, the differences between the x86-64
* and the UML syscall table.
*/
/* Not going to be implemented by UML, since we have no hardware. */ /* Not going to be implemented by UML, since we have no hardware. */
#define stub_iopl sys_ni_syscall #define stub_iopl sys_ni_syscall
#define sys_ioperm sys_ni_syscall #define sys_ioperm sys_ni_syscall
/* The UML TLS problem. Note that x86_64 does not implement this, so the below /*
* is needed only for the ia32 compatibility. */ * The UML TLS problem. Note that x86_64 does not implement this, so the below
/*#define sys_set_thread_area sys_ni_syscall * is needed only for the ia32 compatibility.
#define sys_get_thread_area sys_ni_syscall*/ */
/* On UML we call it this way ("old" means it's not mmap2) */ /* On UML we call it this way ("old" means it's not mmap2) */
#define sys_mmap old_mmap #define sys_mmap old_mmap
/* On x86-64 sys_uname is actually sys_newuname plus a compatibility trick. /*
* See arch/x86_64/kernel/sys_x86_64.c */ * On x86-64 sys_uname is actually sys_newuname plus a compatibility trick.
* See arch/x86_64/kernel/sys_x86_64.c
*/
#define sys_uname sys_uname64 #define sys_uname sys_uname64
#define stub_clone sys_clone #define stub_clone sys_clone
...@@ -47,7 +53,10 @@ typedef void (*sys_call_ptr_t)(void); ...@@ -47,7 +53,10 @@ typedef void (*sys_call_ptr_t)(void);
extern void sys_ni_syscall(void); extern void sys_ni_syscall(void);
sys_call_ptr_t sys_call_table[UM_NR_syscall_max+1] __cacheline_aligned = { sys_call_ptr_t sys_call_table[UM_NR_syscall_max+1] __cacheline_aligned = {
/* Smells like a like a compiler bug -- it doesn't work when the & below is removed. */ /*
* Smells like a like a compiler bug -- it doesn't work when the &
* below is removed.
*/
[0 ... UM_NR_syscall_max] = &sys_ni_syscall, [0 ... UM_NR_syscall_max] = &sys_ni_syscall,
#include <asm-x86/unistd_64.h> #include <asm-x86/unistd_64.h>
}; };
...@@ -4,32 +4,33 @@ ...@@ -4,32 +4,33 @@
* Licensed under the GPL * Licensed under the GPL
*/ */
#include "linux/kernel.h" #include <linux/kernel.h>
#include "linux/utsname.h" #include <linux/module.h>
#include "linux/module.h" #include <linux/sched.h>
#include "asm/current.h" #include <linux/utsname.h>
#include "asm/ptrace.h" #include <asm/current.h>
#include <asm/ptrace.h>
#include "sysrq.h" #include "sysrq.h"
void __show_regs(struct pt_regs * regs) void __show_regs(struct pt_regs *regs)
{ {
printk("\n"); printk("\n");
print_modules(); print_modules();
printk("Pid: %d, comm: %.20s %s %s\n", task_pid_nr(current), printk(KERN_INFO "Pid: %d, comm: %.20s %s %s\n", task_pid_nr(current),
current->comm, print_tainted(), init_utsname()->release); current->comm, print_tainted(), init_utsname()->release);
printk("RIP: %04lx:[<%016lx>] ", PT_REGS_CS(regs) & 0xffff, printk(KERN_INFO "RIP: %04lx:[<%016lx>]\n", PT_REGS_CS(regs) & 0xffff,
PT_REGS_RIP(regs)); PT_REGS_RIP(regs));
printk("\nRSP: %016lx EFLAGS: %08lx\n", PT_REGS_RSP(regs), printk(KERN_INFO "RSP: %016lx EFLAGS: %08lx\n", PT_REGS_RSP(regs),
PT_REGS_EFLAGS(regs)); PT_REGS_EFLAGS(regs));
printk("RAX: %016lx RBX: %016lx RCX: %016lx\n", printk(KERN_INFO "RAX: %016lx RBX: %016lx RCX: %016lx\n",
PT_REGS_RAX(regs), PT_REGS_RBX(regs), PT_REGS_RCX(regs)); PT_REGS_RAX(regs), PT_REGS_RBX(regs), PT_REGS_RCX(regs));
printk("RDX: %016lx RSI: %016lx RDI: %016lx\n", printk(KERN_INFO "RDX: %016lx RSI: %016lx RDI: %016lx\n",
PT_REGS_RDX(regs), PT_REGS_RSI(regs), PT_REGS_RDI(regs)); PT_REGS_RDX(regs), PT_REGS_RSI(regs), PT_REGS_RDI(regs));
printk("RBP: %016lx R08: %016lx R09: %016lx\n", printk(KERN_INFO "RBP: %016lx R08: %016lx R09: %016lx\n",
PT_REGS_RBP(regs), PT_REGS_R8(regs), PT_REGS_R9(regs)); PT_REGS_RBP(regs), PT_REGS_R8(regs), PT_REGS_R9(regs));
printk("R10: %016lx R11: %016lx R12: %016lx\n", printk(KERN_INFO "R10: %016lx R11: %016lx R12: %016lx\n",
PT_REGS_R10(regs), PT_REGS_R11(regs), PT_REGS_R12(regs)); PT_REGS_R10(regs), PT_REGS_R11(regs), PT_REGS_R12(regs));
printk("R13: %016lx R14: %016lx R15: %016lx\n", printk(KERN_INFO "R13: %016lx R14: %016lx R15: %016lx\n",
PT_REGS_R13(regs), PT_REGS_R14(regs), PT_REGS_R15(regs)); PT_REGS_R13(regs), PT_REGS_R14(regs), PT_REGS_R15(regs));
} }
......
#include <linux/vmalloc.h> #include <linux/vmalloc.h>
#include <linux/moduleloader.h> #include <linux/moduleloader.h>
/*Copied from i386 arch/i386/kernel/module.c */ /* Copied from i386 arch/i386/kernel/module.c */
void *module_alloc(unsigned long size) void *module_alloc(unsigned long size)
{ {
if (size == 0) if (size == 0)
...@@ -13,7 +13,9 @@ void *module_alloc(unsigned long size) ...@@ -13,7 +13,9 @@ void *module_alloc(unsigned long size)
void module_free(struct module *mod, void *module_region) void module_free(struct module *mod, void *module_region)
{ {
vfree(module_region); vfree(module_region);
/* FIXME: If module_region == mod->init_region, trim exception /*
table entries. */ * FIXME: If module_region == mod->init_region, trim exception
* table entries.
*/
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment