x86, 32-bit: Convert sys_vm86 & sys_vm86old
Convert these to new PTREGSCALL stubs. Signed-off-by: Brian Gerst <brgerst@gmail.com> LKML-Reference: <1260403316-5679-6-git-send-email-brgerst@gmail.com> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
This commit is contained in:
Родитель
052acad48a
Коммит
f1382f157f
|
@ -66,8 +66,8 @@ asmlinkage int sys_uname(struct old_utsname __user *);
|
|||
asmlinkage int sys_olduname(struct oldold_utsname __user *);
|
||||
|
||||
/* kernel/vm86_32.c */
|
||||
int sys_vm86old(struct pt_regs *);
|
||||
int sys_vm86(struct pt_regs *);
|
||||
int sys_vm86old(struct vm86_struct __user *, struct pt_regs *);
|
||||
int sys_vm86(unsigned long, unsigned long, struct pt_regs *);
|
||||
|
||||
#else /* CONFIG_X86_32 */
|
||||
|
||||
|
|
|
@ -766,8 +766,8 @@ PTREGSCALL3(execve)
|
|||
PTREGSCALL2(sigaltstack)
|
||||
PTREGSCALL0(sigreturn)
|
||||
PTREGSCALL0(rt_sigreturn)
|
||||
PTREGSCALL0(vm86)
|
||||
PTREGSCALL0(vm86old)
|
||||
PTREGSCALL2(vm86)
|
||||
PTREGSCALL1(vm86old)
|
||||
|
||||
.macro FIXUP_ESPFIX_STACK
|
||||
/*
|
||||
|
|
|
@ -197,9 +197,8 @@ out:
|
|||
static int do_vm86_irq_handling(int subfunction, int irqnumber);
|
||||
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_,
|
||||
* this avoids wasting of stack space.
|
||||
* This remains on the stack until we
|
||||
|
@ -227,7 +226,7 @@ out:
|
|||
}
|
||||
|
||||
|
||||
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_,
|
||||
* this avoids wasting of stack space.
|
||||
|
@ -239,12 +238,12 @@ int sys_vm86(struct pt_regs *regs)
|
|||
struct vm86plus_struct __user *v86;
|
||||
|
||||
tsk = current;
|
||||
switch (regs->bx) {
|
||||
switch (cmd) {
|
||||
case VM86_REQUEST_IRQ:
|
||||
case VM86_FREE_IRQ:
|
||||
case VM86_GET_IRQ_BITS:
|
||||
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;
|
||||
case VM86_PLUS_INSTALL_CHECK:
|
||||
/*
|
||||
|
@ -261,7 +260,7 @@ int sys_vm86(struct pt_regs *regs)
|
|||
ret = -EPERM;
|
||||
if (tsk->thread.saved_sp0)
|
||||
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,
|
||||
offsetof(struct kernel_vm86_struct, regs32) -
|
||||
sizeof(info.regs));
|
||||
|
|
Загрузка…
Ссылка в новой задаче