Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal
Linus Torvalds [Fri, 12 Oct 2012 01:49:08 +0000 (10:49 +0900)]
Pull pile 2 of execve and kernel_thread unification work from Al Viro:
 "Stuff in there: kernel_thread/kernel_execve/sys_execve conversions for
  several more architectures plus assorted signal fixes and cleanups.

  There'll be more (in particular, real fixes for the alpha
  do_notify_resume() irq mess)..."

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal: (43 commits)
  alpha: don't open-code trace_report_syscall_{enter,exit}
  Uninclude linux/freezer.h
  m32r: trim masks
  avr32: trim masks
  tile: don't bother with SIGTRAP in setup_frame
  microblaze: don't bother with SIGTRAP in setup_rt_frame()
  mn10300: don't bother with SIGTRAP in setup_frame()
  frv: no need to raise SIGTRAP in setup_frame()
  x86: get rid of duplicate code in case of CONFIG_VM86
  unicore32: remove pointless test
  h8300: trim _TIF_WORK_MASK
  parisc: decide whether to go to slow path (tracesys) based on thread flags
  parisc: don't bother looping in do_signal()
  parisc: fix double restarts
  bury the rest of TIF_IRET
  sanitize tsk_is_polling()
  bury _TIF_RESTORE_SIGMASK
  unicore32: unobfuscate _TIF_WORK_MASK
  mips: NOTIFY_RESUME is not needed in TIF masks
  mips: merge the identical "return from syscall" per-ABI code
  ...

Conflicts:
arch/arm/include/asm/thread_info.h

20 files changed:
1  2 
arch/arm/include/asm/thread_info.h
arch/c6x/include/asm/unistd.h
arch/frv/Kconfig
arch/frv/kernel/process.c
arch/ia64/kernel/signal.c
arch/m68k/Kconfig
arch/m68k/kernel/process.c
arch/microblaze/kernel/signal.c
arch/mn10300/kernel/process.c
arch/powerpc/Kconfig
arch/powerpc/include/asm/processor.h
arch/powerpc/include/asm/thread_info.h
arch/powerpc/include/asm/unistd.h
arch/powerpc/kernel/entry_32.S
arch/powerpc/kernel/entry_64.S
arch/powerpc/kernel/process.c
arch/powerpc/kernel/sys_ppc32.c
arch/tile/kernel/compat_signal.c
arch/x86/kernel/entry_32.S
kernel/sched/core.c

@@@ -150,8 -148,6 +150,7 @@@ extern int vfp_restore_user_hwstate(str
  #define TIF_NOTIFY_RESUME     2       /* callback before returning to user */
  #define TIF_SYSCALL_TRACE     8
  #define TIF_SYSCALL_AUDIT     9
 +#define TIF_SYSCALL_TRACEPOINT        10
- #define TIF_POLLING_NRFLAG    16
  #define TIF_USING_IWMMXT      17
  #define TIF_MEMDIE            18      /* is terminating due to OOM killer */
  #define TIF_RESTORE_SIGMASK   20
  #define _TIF_NOTIFY_RESUME    (1 << TIF_NOTIFY_RESUME)
  #define _TIF_SYSCALL_TRACE    (1 << TIF_SYSCALL_TRACE)
  #define _TIF_SYSCALL_AUDIT    (1 << TIF_SYSCALL_AUDIT)
 +#define _TIF_SYSCALL_TRACEPOINT       (1 << TIF_SYSCALL_TRACEPOINT)
- #define _TIF_POLLING_NRFLAG   (1 << TIF_POLLING_NRFLAG)
  #define _TIF_USING_IWMMXT     (1 << TIF_USING_IWMMXT)
  #define _TIF_SECCOMP          (1 << TIF_SECCOMP)
  
   *   NON INFRINGEMENT.        See the GNU General Public License for
   *   more details.
   */
 -#if !defined(_ASM_C6X_UNISTD_H) || defined(__SYSCALL)
 -#define _ASM_C6X_UNISTD_H
  
+ #define __ARCH_WANT_KERNEL_EXECVE
+ #define __ARCH_WANT_SYS_EXECVE
  /* Use the standard ABI for syscalls. */
  #include <asm-generic/unistd.h>
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
  #define __ARCH_WANT_COMPAT_SYS_TIME
  #define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND
  #define __ARCH_WANT_SYS_NEWFSTATAT
 +#define __ARCH_WANT_COMPAT_SYS_SENDFILE
  #endif
+ #define __ARCH_WANT_SYS_EXECVE
+ #define __ARCH_WANT_KERNEL_EXECVE
  
  /*
   * "Conditional" syscalls
Simple merge
Simple merge
Simple merge
@@@ -143,41 -143,50 +143,19 @@@ long compat_sys_ipc(u32 call, u32 first
   * proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
   * and the register representation of a signed int (msr in 64-bit mode) is performed.
   */
 -asmlinkage long compat_sys_sendfile(u32 out_fd, u32 in_fd, compat_off_t __user * offset, u32 count)
 +asmlinkage long compat_sys_sendfile_wrapper(u32 out_fd, u32 in_fd,
 +                                          compat_off_t __user *offset, u32 count)
  {
 -      mm_segment_t old_fs = get_fs();
 -      int ret;
 -      off_t of;
 -      off_t __user *up;
 -
 -      if (offset && get_user(of, offset))
 -              return -EFAULT;
 -
 -      /* The __user pointer cast is valid because of the set_fs() */          
 -      set_fs(KERNEL_DS);
 -      up = offset ? (off_t __user *) &of : NULL;
 -      ret = sys_sendfile((int)out_fd, (int)in_fd, up, count);
 -      set_fs(old_fs);
 -      
 -      if (offset && put_user(of, offset))
 -              return -EFAULT;
 -              
 -      return ret;
 +      return compat_sys_sendfile((int)out_fd, (int)in_fd, offset, count);
  }
  
 -asmlinkage int compat_sys_sendfile64(int out_fd, int in_fd, compat_loff_t __user *offset, s32 count)
 +asmlinkage long compat_sys_sendfile64_wrapper(u32 out_fd, u32 in_fd,
 +                                            compat_loff_t __user *offset, u32 count)
  {
 -      mm_segment_t old_fs = get_fs();
 -      int ret;
 -      loff_t lof;
 -      loff_t __user *up;
 -      
 -      if (offset && get_user(lof, offset))
 -              return -EFAULT;
 -              
 -      /* The __user pointer cast is valid because of the set_fs() */          
 -      set_fs(KERNEL_DS);
 -      up = offset ? (loff_t __user *) &lof : NULL;
 -      ret = sys_sendfile64(out_fd, in_fd, up, count);
 -      set_fs(old_fs);
 -      
 -      if (offset && put_user(lof, offset))
 -              return -EFAULT;
 -              
 -      return ret;
 +      return sys_sendfile((int)out_fd, (int)in_fd,
 +                          (off_t __user *)offset, count);
  }
  
- long compat_sys_execve(unsigned long a0, unsigned long a1, unsigned long a2,
-                 unsigned long a3, unsigned long a4, unsigned long a5,
-                 struct pt_regs *regs)
- {
-       int error;
-       char * filename;
-       
-       filename = getname((char __user *) a0);
-       error = PTR_ERR(filename);
-       if (IS_ERR(filename))
-               goto out;
-       flush_fp_to_thread(current);
-       flush_altivec_to_thread(current);
-       error = compat_do_execve(filename, compat_ptr(a1), compat_ptr(a2), regs);
-       putname(filename);
- out:
-       return error;
- }
  /* Note: it is necessary to treat option as an unsigned int, 
   * with the corresponding cast to a signed int to insure that the 
   * proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
Simple merge
Simple merge
Simple merge