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

Commit 61c39bb3 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6

* 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6:
  [S390] tape_char: add missing compat_ptr conversion
  [S390] zcrypt: add sanity check before copy_from_user()
  [S390] unwire sys_recvmmsg again
  [S390] con3215: remove empty ioctl function
  [S390] dasd: add proper compat pointer conversion for symmetrix ioctl
  [S390] mmap: add missing compat_ptr conversion to both mmap compat syscalls
  [S390] bug: implement arch specific __WARN macro
  [S390] Move __cpu_logical_map to smp.c
  [S390] tape_block: remove ioctl function
  [S390] smp: remove volatile type quilifier from __cpu_logical_map
  [S390] smp: setup smp_processor_id early
  [S390] use helpers for rlimits
  [S390] fs3270: add missing compat ptr conversion
  [S390] vmcp: add missing compat ptr conversion
  [S390] cio: add missing compat ptr conversion
  [S390] dasd: add missing compat ptr conversion
  [S390] remove superfluous TIF_USEDFPU bit
  [S390] duplicate SIGTRAP on signal delivery.
  [S390] clear TIF_SINGLE_STEP for new process.
  [S390] fix loading of PER control registers for utrace.
parents 4a24eef6 c5406079
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -52,6 +52,10 @@
	unreachable();					\
	unreachable();					\
} while (0)
} while (0)


#define __WARN() do {					\
	__EMIT_BUG(BUGFLAG_WARNING);			\
} while (0)

#define WARN_ON(x) ({					\
#define WARN_ON(x) ({					\
	int __ret_warn_on = !!(x);			\
	int __ret_warn_on = !!(x);			\
	if (__builtin_constant_p(__ret_warn_on)) {	\
	if (__builtin_constant_p(__ret_warn_on)) {	\
+14 −6
Original line number Original line Diff line number Diff line
@@ -15,11 +15,19 @@
#ifndef __SIGP__
#ifndef __SIGP__
#define __SIGP__
#define __SIGP__


#include <asm/ptrace.h>
#include <asm/system.h>
#include <asm/atomic.h>


/* get real cpu address from logical cpu number */
/* get real cpu address from logical cpu number */
extern volatile int __cpu_logical_map[];
extern int __cpu_logical_map[];

static inline int cpu_logical_map(int cpu)
{
#ifdef CONFIG_SMP
	return __cpu_logical_map[cpu];
#else
	return stap();
#endif
}


typedef enum
typedef enum
{
{
@@ -79,7 +87,7 @@ signal_processor(__u16 cpu_addr, sigp_order_code order_code)
		"	ipm	%0\n"
		"	ipm	%0\n"
		"	srl	%0,28\n"
		"	srl	%0,28\n"
		:	"=d"	(ccode)
		:	"=d"	(ccode)
		: "d" (reg1), "d" (__cpu_logical_map[cpu_addr]),
		: "d" (reg1), "d" (cpu_logical_map(cpu_addr)),
		  "a" (order_code) : "cc" , "memory");
		  "a" (order_code) : "cc" , "memory");
	return ccode;
	return ccode;
}
}
@@ -98,7 +106,7 @@ signal_processor_p(__u32 parameter, __u16 cpu_addr, sigp_order_code order_code)
		"	ipm	%0\n"
		"	ipm	%0\n"
		"	srl	%0,28\n"
		"	srl	%0,28\n"
		: "=d" (ccode)
		: "=d" (ccode)
		: "d" (reg1), "d" (__cpu_logical_map[cpu_addr]),
		: "d" (reg1), "d" (cpu_logical_map(cpu_addr)),
		  "a" (order_code) : "cc" , "memory");
		  "a" (order_code) : "cc" , "memory");
	return ccode;
	return ccode;
}
}
@@ -118,7 +126,7 @@ signal_processor_ps(__u32 *statusptr, __u32 parameter, __u16 cpu_addr,
		"	ipm	%0\n"
		"	ipm	%0\n"
		"	srl	%0,28\n"
		"	srl	%0,28\n"
		: "=d" (ccode), "+d" (reg1)
		: "=d" (ccode), "+d" (reg1)
		: "d" (__cpu_logical_map[cpu_addr]), "a" (order_code)
		: "d" (cpu_logical_map(cpu_addr)), "a" (order_code)
		: "cc" , "memory");
		: "cc" , "memory");
	*statusptr = reg1;
	*statusptr = reg1;
	return ccode;
	return ccode;
+5 −7
Original line number Original line Diff line number Diff line
@@ -93,13 +93,12 @@ static inline struct thread_info *current_thread_info(void)
#define TIF_SYSCALL_AUDIT	9	/* syscall auditing active */
#define TIF_SYSCALL_AUDIT	9	/* syscall auditing active */
#define TIF_SECCOMP		10	/* secure computing */
#define TIF_SECCOMP		10	/* secure computing */
#define TIF_SYSCALL_TRACEPOINT	11	/* syscall tracepoint instrumentation */
#define TIF_SYSCALL_TRACEPOINT	11	/* syscall tracepoint instrumentation */
#define TIF_USEDFPU		16	/* FPU was used by this task this quantum (SMP) */
#define TIF_POLLING_NRFLAG	16	/* true if poll_idle() is polling
#define TIF_POLLING_NRFLAG	17	/* true if poll_idle() is polling 
					   TIF_NEED_RESCHED */
					   TIF_NEED_RESCHED */
#define TIF_31BIT		18	/* 32bit process */ 
#define TIF_31BIT		17	/* 32bit process */
#define TIF_MEMDIE		19
#define TIF_MEMDIE		18
#define TIF_RESTORE_SIGMASK	20	/* restore signal mask in do_signal() */
#define TIF_RESTORE_SIGMASK	19	/* restore signal mask in do_signal() */
#define TIF_FREEZE		21	/* thread is freezing for suspend */
#define TIF_FREEZE		20	/* thread is freezing for suspend */


#define _TIF_NOTIFY_RESUME	(1<<TIF_NOTIFY_RESUME)
#define _TIF_NOTIFY_RESUME	(1<<TIF_NOTIFY_RESUME)
#define _TIF_RESTORE_SIGMASK	(1<<TIF_RESTORE_SIGMASK)
#define _TIF_RESTORE_SIGMASK	(1<<TIF_RESTORE_SIGMASK)
@@ -112,7 +111,6 @@ static inline struct thread_info *current_thread_info(void)
#define _TIF_SYSCALL_AUDIT	(1<<TIF_SYSCALL_AUDIT)
#define _TIF_SYSCALL_AUDIT	(1<<TIF_SYSCALL_AUDIT)
#define _TIF_SECCOMP		(1<<TIF_SECCOMP)
#define _TIF_SECCOMP		(1<<TIF_SECCOMP)
#define _TIF_SYSCALL_TRACEPOINT	(1<<TIF_SYSCALL_TRACEPOINT)
#define _TIF_SYSCALL_TRACEPOINT	(1<<TIF_SYSCALL_TRACEPOINT)
#define _TIF_USEDFPU		(1<<TIF_USEDFPU)
#define _TIF_POLLING_NRFLAG	(1<<TIF_POLLING_NRFLAG)
#define _TIF_POLLING_NRFLAG	(1<<TIF_POLLING_NRFLAG)
#define _TIF_31BIT		(1<<TIF_31BIT)
#define _TIF_31BIT		(1<<TIF_31BIT)
#define _TIF_FREEZE		(1<<TIF_FREEZE)
#define _TIF_FREEZE		(1<<TIF_FREEZE)
+4 −2
Original line number Original line Diff line number Diff line
@@ -269,8 +269,7 @@
#define	__NR_pwritev		329
#define	__NR_pwritev		329
#define __NR_rt_tgsigqueueinfo	330
#define __NR_rt_tgsigqueueinfo	330
#define __NR_perf_event_open	331
#define __NR_perf_event_open	331
#define __NR_recvmmsg		332
#define NR_syscalls 332
#define NR_syscalls 333


/* 
/* 
 * There are some system calls that are not present on 64 bit, some
 * There are some system calls that are not present on 64 bit, some
@@ -377,6 +376,9 @@
#define __IGNORE_migrate_pages
#define __IGNORE_migrate_pages
#define __IGNORE_move_pages
#define __IGNORE_move_pages


/* Ignore system calls that are also reachable via sys_socket */
#define __IGNORE_recvmmsg

#define __ARCH_WANT_IPC_PARSE_VERSION
#define __ARCH_WANT_IPC_PARSE_VERSION
#define __ARCH_WANT_OLD_READDIR
#define __ARCH_WANT_OLD_READDIR
#define __ARCH_WANT_SYS_ALARM
#define __ARCH_WANT_SYS_ALARM
+16 −25
Original line number Original line Diff line number Diff line
@@ -616,44 +616,35 @@ asmlinkage long sys32_fstatat64(unsigned int dfd, char __user *filename,
 */
 */


struct mmap_arg_struct_emu31 {
struct mmap_arg_struct_emu31 {
	u32	addr;
	compat_ulong_t addr;
	u32	len;
	compat_ulong_t len;
	u32	prot;
	compat_ulong_t prot;
	u32	flags;
	compat_ulong_t flags;
	u32	fd;
	compat_ulong_t fd;
	u32	offset;
	compat_ulong_t offset;
};
};


asmlinkage unsigned long
asmlinkage unsigned long old32_mmap(struct mmap_arg_struct_emu31 __user *arg)
old32_mmap(struct mmap_arg_struct_emu31 __user *arg)
{
{
	struct mmap_arg_struct_emu31 a;
	struct mmap_arg_struct_emu31 a;
	int error = -EFAULT;


	if (copy_from_user(&a, arg, sizeof(a)))
	if (copy_from_user(&a, arg, sizeof(a)))
		goto out;
		return -EFAULT;

	error = -EINVAL;
	if (a.offset & ~PAGE_MASK)
	if (a.offset & ~PAGE_MASK)
		goto out;
		return -EINVAL;

	a.addr = (unsigned long) compat_ptr(a.addr);
	error = sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd,
	return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd,
			      a.offset >> PAGE_SHIFT);
			      a.offset >> PAGE_SHIFT);
out:
	return error;
}
}


asmlinkage long 
asmlinkage long sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg)
sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg)
{
{
	struct mmap_arg_struct_emu31 a;
	struct mmap_arg_struct_emu31 a;
	int error = -EFAULT;


	if (copy_from_user(&a, arg, sizeof(a)))
	if (copy_from_user(&a, arg, sizeof(a)))
		goto out;
		return -EFAULT;
	error = sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset);
	a.addr = (unsigned long) compat_ptr(a.addr);
out:
	return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset);
	return error;
}
}


asmlinkage long sys32_read(unsigned int fd, char __user * buf, size_t count)
asmlinkage long sys32_read(unsigned int fd, char __user * buf, size_t count)
Loading