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

Commit b3af11af authored by Al Viro's avatar Al Viro
Browse files

x86: get rid of pt_regs argument of iopl(2)



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent ea93a6e2
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -467,7 +467,6 @@ GLOBAL(\label)
	PTREGSCALL stub32_execve, compat_sys_execve, %rcx
	PTREGSCALL stub32_fork, sys_fork, %rdi
	PTREGSCALL stub32_vfork, sys_vfork, %rdi
	PTREGSCALL stub32_iopl, sys_iopl, %rsi

	ALIGN
GLOBAL(stub32_clone)
+1 −1
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@
/* Common in X86_32 and X86_64 */
/* kernel/ioport.c */
asmlinkage long sys_ioperm(unsigned long, unsigned long, int);
long sys_iopl(unsigned int, struct pt_regs *);
asmlinkage long sys_iopl(unsigned int);

/* kernel/ldt.c */
asmlinkage int sys_modify_ldt(int, void __user *, unsigned long);
+0 −1
Original line number Diff line number Diff line
@@ -738,7 +738,6 @@ ENTRY(ptregs_##name) ; \
	CFI_ENDPROC; \
ENDPROC(ptregs_##name)

PTREGSCALL1(iopl)
PTREGSCALL0(sigreturn)
PTREGSCALL0(rt_sigreturn)
PTREGSCALL2(vm86)
+13 −18
Original line number Diff line number Diff line
@@ -828,23 +828,6 @@ int_restore_rest:
	CFI_ENDPROC
END(system_call)

/*
 * Certain special system calls that need to save a complete full stack frame.
 */
	.macro PTREGSCALL label,func,arg
ENTRY(\label)
	PARTIAL_FRAME 1 8		/* offset 8: return address */
	subq $REST_SKIP, %rsp
	CFI_ADJUST_CFA_OFFSET REST_SKIP
	call save_rest
	DEFAULT_FRAME 0 8		/* offset 8: return address */
	leaq 8(%rsp), \arg	/* pt_regs pointer */
	call \func
	jmp ptregscall_common
	CFI_ENDPROC
END(\label)
	.endm

	.macro FORK_LIKE func
ENTRY(stub_\func)
	CFI_STARTPROC
@@ -861,10 +844,22 @@ ENTRY(stub_\func)
END(stub_\func)
	.endm

	.macro FIXED_FRAME label,func
ENTRY(\label)
	CFI_STARTPROC
	PARTIAL_FRAME 0 8		/* offset 8: return address */
	FIXUP_TOP_OF_STACK %r11, 8-ARGOFFSET
	call \func
	RESTORE_TOP_OF_STACK %r11, 8-ARGOFFSET
	ret
	CFI_ENDPROC
END(\label)
	.endm

	FORK_LIKE  clone
	FORK_LIKE  fork
	FORK_LIKE  vfork
	PTREGSCALL stub_iopl, sys_iopl, %rsi
	FIXED_FRAME stub_iopl, sys_iopl

ENTRY(ptregscall_common)
	DEFAULT_FRAME 1 8	/* offset 8: return address */
+2 −1
Original line number Diff line number Diff line
@@ -93,8 +93,9 @@ asmlinkage long sys_ioperm(unsigned long from, unsigned long num, int turn_on)
 * on system-call entry - see also fork() and the signal handling
 * code.
 */
long sys_iopl(unsigned int level, struct pt_regs *regs)
SYSCALL_DEFINE1(iopl, unsigned int, level)
{
	struct pt_regs *regs = current_pt_regs();
	unsigned int old = (regs->flags >> 12) & 3;
	struct thread_struct *t = &current->thread;

Loading