git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 1.9.5.x5
[linux-2.6.git]
/
arch
/
um
/
sys-i386
/
ptrace.c
diff --git
a/arch/um/sys-i386/ptrace.c
b/arch/um/sys-i386/ptrace.c
index
817ef74
..
c6a1bba
100644
(file)
--- a/
arch/um/sys-i386/ptrace.c
+++ b/
arch/um/sys-i386/ptrace.c
@@
-3,10
+3,13
@@
* Licensed under the GPL
*/
* Licensed under the GPL
*/
+#include <linux/config.h>
+#include <linux/compiler.h>
#include "linux/sched.h"
#include "asm/elf.h"
#include "asm/ptrace.h"
#include "asm/uaccess.h"
#include "linux/sched.h"
#include "asm/elf.h"
#include "asm/ptrace.h"
#include "asm/uaccess.h"
+#include "asm/unistd.h"
#include "ptrace_user.h"
#include "sysdep/sigcontext.h"
#include "sysdep/sc.h"
#include "ptrace_user.h"
#include "sysdep/sigcontext.h"
#include "sysdep/sc.h"
@@
-21,13
+24,14
@@
int is_syscall(unsigned long addr)
unsigned short instr;
int n;
unsigned short instr;
int n;
- n = copy_from_user(&instr, (void *) addr, sizeof(instr));
+ n = copy_from_user(&instr, (void
__user
*) addr, sizeof(instr));
if(n){
if(n){
- printk("is_syscall : failed to read instruction from 0x%l
u\n",
+ printk("is_syscall : failed to read instruction from 0x%l
x\n",
addr);
return(0);
}
addr);
return(0);
}
- return(instr == 0x80cd);
+ /* int 0x80 or sysenter */
+ return((instr == 0x80cd) || (instr == 0x340f));
}
/* determines which flags the user has access to. */
}
/* determines which flags the user has access to. */
@@
-173,12
+177,12
@@
static inline unsigned long twd_fxsr_to_i387( struct i387_fxsave_struct *fxsave
*/
#ifdef CONFIG_MODE_TT
*/
#ifdef CONFIG_MODE_TT
-static inline int convert_fxsr_to_user_tt(struct _fpstate
*buf,
+static inline int convert_fxsr_to_user_tt(struct _fpstate
__user *buf,
struct pt_regs *regs)
{
struct i387_fxsave_struct *fxsave = SC_FXSR_ENV(PT_REGS_SC(regs));
unsigned long env[7];
struct pt_regs *regs)
{
struct i387_fxsave_struct *fxsave = SC_FXSR_ENV(PT_REGS_SC(regs));
unsigned long env[7];
- struct _fpreg *to;
+ struct _fpreg
__user
*to;
struct _fpxreg *from;
int i;
struct _fpxreg *from;
int i;
@@
-203,7
+207,7
@@
static inline int convert_fxsr_to_user_tt(struct _fpstate *buf,
}
#endif
}
#endif
-static inline int convert_fxsr_to_user(struct _fpstate
*buf,
+static inline int convert_fxsr_to_user(struct _fpstate
__user *buf,
struct pt_regs *regs)
{
return(CHOOSE_MODE(convert_fxsr_to_user_tt(buf, regs), 0));
struct pt_regs *regs)
{
return(CHOOSE_MODE(convert_fxsr_to_user_tt(buf, regs), 0));
@@
-211,12
+215,12
@@
static inline int convert_fxsr_to_user(struct _fpstate *buf,
#ifdef CONFIG_MODE_TT
static inline int convert_fxsr_from_user_tt(struct pt_regs *regs,
#ifdef CONFIG_MODE_TT
static inline int convert_fxsr_from_user_tt(struct pt_regs *regs,
- struct _fpstate *buf)
+ struct _fpstate
__user
*buf)
{
struct i387_fxsave_struct *fxsave = SC_FXSR_ENV(PT_REGS_SC(regs));
unsigned long env[7];
struct _fpxreg *to;
{
struct i387_fxsave_struct *fxsave = SC_FXSR_ENV(PT_REGS_SC(regs));
unsigned long env[7];
struct _fpxreg *to;
- struct _fpreg *from;
+ struct _fpreg
__user
*from;
int i;
if ( __copy_from_user( env, buf, 7 * sizeof(long) ) )
int i;
if ( __copy_from_user( env, buf, 7 * sizeof(long) ) )
@@
-242,7
+246,7
@@
static inline int convert_fxsr_from_user_tt(struct pt_regs *regs,
#endif
static inline int convert_fxsr_from_user(struct pt_regs *regs,
#endif
static inline int convert_fxsr_from_user(struct pt_regs *regs,
- struct _fpstate *buf)
+ struct _fpstate
__user
*buf)
{
return(CHOOSE_MODE(convert_fxsr_from_user_tt(regs, buf), 0));
}
{
return(CHOOSE_MODE(convert_fxsr_from_user_tt(regs, buf), 0));
}
@@
-251,7
+255,7
@@
int get_fpregs(unsigned long buf, struct task_struct *child)
{
int err;
{
int err;
- err = convert_fxsr_to_user((struct _fpstate
*) buf,
+ err = convert_fxsr_to_user((struct _fpstate
__user *) buf,
&child->thread.regs);
if(err) return(-EFAULT);
else return(0);
&child->thread.regs);
if(err) return(-EFAULT);
else return(0);
@@
-262,7
+266,7
@@
int set_fpregs(unsigned long buf, struct task_struct *child)
int err;
err = convert_fxsr_from_user(&child->thread.regs,
int err;
err = convert_fxsr_from_user(&child->thread.regs,
- (struct _fpstate *) buf);
+ (struct _fpstate
__user
*) buf);
if(err) return(-EFAULT);
else return(0);
}
if(err) return(-EFAULT);
else return(0);
}
@@
-274,7
+278,7
@@
int get_fpxregs_tt(unsigned long buf, struct task_struct *tsk)
struct i387_fxsave_struct *fxsave = SC_FXSR_ENV(PT_REGS_SC(regs));
int err;
struct i387_fxsave_struct *fxsave = SC_FXSR_ENV(PT_REGS_SC(regs));
int err;
- err = __copy_to_user((void *) buf, fxsave,
+ err = __copy_to_user((void
__user
*) buf, fxsave,
sizeof(struct user_fxsr_struct));
if(err) return -EFAULT;
else return 0;
sizeof(struct user_fxsr_struct));
if(err) return -EFAULT;
else return 0;
@@
-293,7
+297,7
@@
int set_fpxregs_tt(unsigned long buf, struct task_struct *tsk)
struct i387_fxsave_struct *fxsave = SC_FXSR_ENV(PT_REGS_SC(regs));
int err;
struct i387_fxsave_struct *fxsave = SC_FXSR_ENV(PT_REGS_SC(regs));
int err;
- err = __copy_from_user(fxsave, (void *) buf,
+ err = __copy_from_user(fxsave, (void
__user
*) buf,
sizeof(struct user_fxsr_struct) );
if(err) return -EFAULT;
else return 0;
sizeof(struct user_fxsr_struct) );
if(err) return -EFAULT;
else return 0;