提交 f1382f15 编写于 作者: B Brian Gerst 提交者: H. Peter Anvin

x86, 32-bit: Convert sys_vm86 & sys_vm86old

Convert these to new PTREGSCALL stubs.
Signed-off-by: NBrian Gerst <brgerst@gmail.com>
LKML-Reference: <1260403316-5679-6-git-send-email-brgerst@gmail.com>
Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
上级 052acad4
...@@ -66,8 +66,8 @@ asmlinkage int sys_uname(struct old_utsname __user *); ...@@ -66,8 +66,8 @@ asmlinkage int sys_uname(struct old_utsname __user *);
asmlinkage int sys_olduname(struct oldold_utsname __user *); asmlinkage int sys_olduname(struct oldold_utsname __user *);
/* kernel/vm86_32.c */ /* kernel/vm86_32.c */
int sys_vm86old(struct pt_regs *); int sys_vm86old(struct vm86_struct __user *, struct pt_regs *);
int sys_vm86(struct pt_regs *); int sys_vm86(unsigned long, unsigned long, struct pt_regs *);
#else /* CONFIG_X86_32 */ #else /* CONFIG_X86_32 */
......
...@@ -766,8 +766,8 @@ PTREGSCALL3(execve) ...@@ -766,8 +766,8 @@ PTREGSCALL3(execve)
PTREGSCALL2(sigaltstack) PTREGSCALL2(sigaltstack)
PTREGSCALL0(sigreturn) PTREGSCALL0(sigreturn)
PTREGSCALL0(rt_sigreturn) PTREGSCALL0(rt_sigreturn)
PTREGSCALL0(vm86) PTREGSCALL2(vm86)
PTREGSCALL0(vm86old) PTREGSCALL1(vm86old)
.macro FIXUP_ESPFIX_STACK .macro FIXUP_ESPFIX_STACK
/* /*
......
...@@ -197,9 +197,8 @@ static void mark_screen_rdonly(struct mm_struct *mm) ...@@ -197,9 +197,8 @@ static void mark_screen_rdonly(struct mm_struct *mm)
static int do_vm86_irq_handling(int subfunction, int irqnumber); static int do_vm86_irq_handling(int subfunction, int irqnumber);
static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk); static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk);
int sys_vm86old(struct pt_regs *regs) int sys_vm86old(struct vm86_struct __user *v86, struct pt_regs *regs)
{ {
struct vm86_struct __user *v86 = (struct vm86_struct __user *)regs->bx;
struct kernel_vm86_struct info; /* declare this _on top_, struct kernel_vm86_struct info; /* declare this _on top_,
* this avoids wasting of stack space. * this avoids wasting of stack space.
* This remains on the stack until we * This remains on the stack until we
...@@ -227,7 +226,7 @@ int sys_vm86old(struct pt_regs *regs) ...@@ -227,7 +226,7 @@ int sys_vm86old(struct pt_regs *regs)
} }
int sys_vm86(struct pt_regs *regs) int sys_vm86(unsigned long cmd, unsigned long arg, struct pt_regs *regs)
{ {
struct kernel_vm86_struct info; /* declare this _on top_, struct kernel_vm86_struct info; /* declare this _on top_,
* this avoids wasting of stack space. * this avoids wasting of stack space.
...@@ -239,12 +238,12 @@ int sys_vm86(struct pt_regs *regs) ...@@ -239,12 +238,12 @@ int sys_vm86(struct pt_regs *regs)
struct vm86plus_struct __user *v86; struct vm86plus_struct __user *v86;
tsk = current; tsk = current;
switch (regs->bx) { switch (cmd) {
case VM86_REQUEST_IRQ: case VM86_REQUEST_IRQ:
case VM86_FREE_IRQ: case VM86_FREE_IRQ:
case VM86_GET_IRQ_BITS: case VM86_GET_IRQ_BITS:
case VM86_GET_AND_RESET_IRQ: case VM86_GET_AND_RESET_IRQ:
ret = do_vm86_irq_handling(regs->bx, (int)regs->cx); ret = do_vm86_irq_handling(cmd, (int)arg);
goto out; goto out;
case VM86_PLUS_INSTALL_CHECK: case VM86_PLUS_INSTALL_CHECK:
/* /*
...@@ -261,7 +260,7 @@ int sys_vm86(struct pt_regs *regs) ...@@ -261,7 +260,7 @@ int sys_vm86(struct pt_regs *regs)
ret = -EPERM; ret = -EPERM;
if (tsk->thread.saved_sp0) if (tsk->thread.saved_sp0)
goto out; goto out;
v86 = (struct vm86plus_struct __user *)regs->cx; v86 = (struct vm86plus_struct __user *)arg;
tmp = copy_vm86_regs_from_user(&info.regs, &v86->regs, tmp = copy_vm86_regs_from_user(&info.regs, &v86->regs,
offsetof(struct kernel_vm86_struct, regs32) - offsetof(struct kernel_vm86_struct, regs32) -
sizeof(info.regs)); sizeof(info.regs));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册