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

Commit f1382f15 authored by Brian Gerst's avatar Brian Gerst Committed by H. Peter Anvin
Browse files

x86, 32-bit: Convert sys_vm86 & sys_vm86old



Convert these to new PTREGSCALL stubs.

Signed-off-by: default avatarBrian Gerst <brgerst@gmail.com>
LKML-Reference: <1260403316-5679-6-git-send-email-brgerst@gmail.com>
Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
parent 052acad4
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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 */

+2 −2
Original line number Diff line number Diff line
@@ -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
/*
+5 −6
Original line number Diff line number Diff line
@@ -197,9 +197,8 @@ static void mark_screen_rdonly(struct mm_struct *mm)
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 @@ 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_,
					 * 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));