From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Fri, 12 Oct 2012 01:49:08 +0000 (+0900)
Subject: Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal
X-Git-Tag: firefly_0821_release~3680^2~1847
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=8213a2f3eeafdecf06dd718cb4130372263f6067;p=firefly-linux-kernel-4.4.55.git

Merge branch 'for-linus' of git://git./linux/kernel/git/viro/signal

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
---

8213a2f3eeafdecf06dd718cb4130372263f6067
diff --cc arch/arm/include/asm/thread_info.h
index f71cdab18b87,b2d6b412172d..8477b4c1d39f
--- a/arch/arm/include/asm/thread_info.h
+++ b/arch/arm/include/asm/thread_info.h
@@@ -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
@@@ -163,8 -159,6 +162,7 @@@
  #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)
  
diff --cc arch/c6x/include/asm/unistd.h
index ed2259043eec,3c131d5888c1..4ff747d12dad
--- a/arch/c6x/include/asm/unistd.h
+++ b/arch/c6x/include/asm/unistd.h
@@@ -13,7 -13,12 +13,10 @@@
   *   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>
  
diff --cc arch/powerpc/include/asm/unistd.h
index c683fa350add,26a6825909b6..2533752af30f
--- a/arch/powerpc/include/asm/unistd.h
+++ b/arch/powerpc/include/asm/unistd.h
@@@ -419,8 -419,9 +419,10 @@@
  #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
diff --cc arch/powerpc/kernel/sys_ppc32.c
index abd1112da54f,a1ae73a0f352..9c2ed90ece8f
--- a/arch/powerpc/kernel/sys_ppc32.c
+++ b/arch/powerpc/kernel/sys_ppc32.c
@@@ -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)