]> git.karo-electronics.de Git - linux-beck.git/commitdiff
x86: get rid of pt_regs argument of iopl(2)
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 20 Nov 2012 03:00:52 +0000 (22:00 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 3 Feb 2013 23:16:24 +0000 (18:16 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/x86/ia32/ia32entry.S
arch/x86/include/asm/syscalls.h
arch/x86/kernel/entry_32.S
arch/x86/kernel/entry_64.S
arch/x86/kernel/ioport.c
arch/x86/syscalls/syscall_32.tbl
arch/x86/um/sys_call_table_32.c

index 102ff7cb3e4146ef1e158d718c49c1c0a6773f7b..74bc91e3612bdb384499b3a0cd630c9abdb7fb3c 100644 (file)
@@ -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)
index 58b7e3eac0ae50cbeb9a0582d8014de0b58cd09c..76be6f2d980c44360aa56ce8951708871141581a 100644 (file)
@@ -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);
index 6ed91d9980e240b73fa824f7db00d8065d145316..415c6346d8bf3319d04a22cd62037526ee8a75a1 100644 (file)
@@ -738,7 +738,6 @@ ENTRY(ptregs_##name) ; \
        CFI_ENDPROC; \
 ENDPROC(ptregs_##name)
 
-PTREGSCALL1(iopl)
 PTREGSCALL0(sigreturn)
 PTREGSCALL0(rt_sigreturn)
 PTREGSCALL2(vm86)
index 2f2f57ac3748be5f26e2b924fb9b23e6a5220c20..4486fee3999fd1d7fd71b0129304a9e1bfa48aa6 100644 (file)
@@ -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 */
index 8c968974253de19660b91f6da2b80f64e909c537..4ddaf66ea35f696eac6afce6bb43f01d2d84f1aa 100644 (file)
@@ -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;
 
index 28e3fa9056ea6de9dbf73b512e1ea7deb647d1fa..aa15a7a94cf78b9a460ddff0cc3e4bac5483e285 100644 (file)
 107    i386    lstat                   sys_newlstat                    compat_sys_newlstat
 108    i386    fstat                   sys_newfstat                    compat_sys_newfstat
 109    i386    olduname                sys_uname
-110    i386    iopl                    ptregs_iopl                     stub32_iopl
+110    i386    iopl                    sys_iopl
 111    i386    vhangup                 sys_vhangup
 112    i386    idle
 113    i386    vm86old                 ptregs_vm86old                  sys32_vm86_warning
index a0c3b0d1a1220082a64d8c977b61e607c7db428c..5cc2bcefb6ab17ea5085600b74be47b1c851061c 100644 (file)
@@ -24,7 +24,6 @@
 
 #define old_mmap sys_old_mmap
 
-#define ptregs_iopl sys_iopl
 #define ptregs_vm86old sys_vm86old
 #define ptregs_vm86 sys_vm86