public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask generic
@ 2003-01-16  3:41 Stephen Rothwell
  2003-01-16  3:43 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask ppc64 Stephen Rothwell
                   ` (6 more replies)
  0 siblings, 7 replies; 9+ messages in thread
From: Stephen Rothwell @ 2003-01-16  3:41 UTC (permalink / raw)
  To: Linus; +Cc: LKML, anton, David S. Miller, ak, davidm, schwidefsky, ralf,
	matthew

Hi Linus,

This patch creates compat_sys_sigpending and compat_sys_sigprocmask
and removes all the arch specific versions.  It requires my previous
patch ("PATCH][COMPAT] compat_{old_}sigset_t").  The diffstat of
the entire patch is below, but here I have included only the generic
part.

 arch/ia64/ia32/ia32_entry.S       |    4 +-
 arch/ia64/ia32/ia32_signal.c      |    6 ----
 arch/ia64/ia32/sys_ia32.c         |    6 ----
 arch/mips64/kernel/scall_o32.S    |    4 +-
 arch/mips64/kernel/signal32.c     |   38 ----------------------------
 arch/parisc/kernel/signal32.c     |   51 --------------------------------------
 arch/parisc/kernel/syscall.S      |    4 +-
 arch/ppc64/kernel/misc.S          |    4 +-
 arch/ppc64/kernel/signal32.c      |   50 -------------------------------------
 arch/s390x/kernel/entry.S         |    4 +-
 arch/s390x/kernel/linux32.c       |   32 -----------------------
 arch/s390x/kernel/wrapper32.S     |   18 ++++++-------
 arch/sparc64/kernel/sys_sparc32.c |   32 -----------------------
 arch/sparc64/kernel/systbls.S     |    6 ++--
 arch/x86_64/ia32/ia32entry.S      |    4 +-
 arch/x86_64/ia32/sys_ia32.c       |   35 --------------------------
 kernel/compat.c                   |   44 ++++++++++++++++++++++++++++++++
 17 files changed, 67 insertions(+), 275 deletions(-)

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

diff -ruN 2.5.58-32bit.5/kernel/compat.c 2.5.58-32bit.6/kernel/compat.c
--- 2.5.58-32bit.5/kernel/compat.c	2003-01-09 16:24:07.000000000 +1100
+++ 2.5.58-32bit.6/kernel/compat.c	2003-01-16 11:26:43.000000000 +1100
@@ -4,7 +4,7 @@
  *  Kernel compatibililty routines for e.g. 32 bit syscall support
  *  on 64 bit kernels.
  *
- *  Copyright (C) 2002 Stephen Rothwell, IBM Corporation
+ *  Copyright (C) 2002-2003 Stephen Rothwell, IBM Corporation
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License version 2 as
@@ -15,6 +15,7 @@
 #include <linux/compat.h>
 #include <linux/errno.h>
 #include <linux/time.h>
+#include <linux/signal.h>
 
 #include <asm/uaccess.h>
 
@@ -166,3 +167,44 @@
 	}
 	return compat_jiffies_to_clock_t(jiffies);
 }
+
+/*
+ * Assumption: old_sigset_t and compat_old_sigset_t are both
+ * types that can be passed to put_user()/get_user().
+ */
+
+extern asmlinkage long sys_sigpending(old_sigset_t *);
+
+asmlinkage long compat_sys_sigpending(compat_old_sigset_t *set)
+{
+	old_sigset_t s;
+	long ret;
+	mm_segment_t old_fs = get_fs();
+
+	set_fs(KERNEL_DS);
+	ret = sys_sigpending(&s);
+	set_fs(old_fs);
+	if (ret == 0)
+		ret = put_user(s, set);
+	return ret;
+}
+
+extern asmlinkage long sys_sigprocmask(int, old_sigset_t *, old_sigset_t *);
+
+asmlinkage long compat_sys_sigprocmask(int how, compat_old_sigset_t *set,
+		compat_old_sigset_t *oset)
+{
+	old_sigset_t s;
+	long ret;
+	mm_segment_t old_fs;
+
+	if (set && get_user(s, set))
+		return -EFAULT;
+	old_fs = get_fs();
+	set_fs(KERNEL_DS);
+	ret = sys_sigprocmask(how, set ? &s : NULL, oset ? &s : NULL);
+	set_fs(old_fs);
+	if (ret == 0)
+		ret = put_user(s, oset);
+	return ret;
+}

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask ppc64
  2003-01-16  3:41 [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask generic Stephen Rothwell
@ 2003-01-16  3:43 ` Stephen Rothwell
  2003-01-16  3:45 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask sparc64 Stephen Rothwell
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Stephen Rothwell @ 2003-01-16  3:43 UTC (permalink / raw)
  To: anton; +Cc: torvalds, linux-kernel

Hi Anton,

Here is the ppc64 part.
-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

diff -ruN 2.5.58-32bit.5/arch/ppc64/kernel/misc.S 2.5.58-32bit.6/arch/ppc64/kernel/misc.S
--- 2.5.58-32bit.5/arch/ppc64/kernel/misc.S	2003-01-14 09:57:51.000000000 +1100
+++ 2.5.58-32bit.6/arch/ppc64/kernel/misc.S	2003-01-16 01:43:58.000000000 +1100
@@ -541,7 +541,7 @@
 	.llong .sys_setreuid	        /* 70 */
 	.llong .sys_setregid
 	.llong .sys_sigsuspend
-	.llong .sys32_sigpending
+	.llong .compat_sys_sigpending
 	.llong .sys32_sethostname
 	.llong .sys32_setrlimit	        /* 75 */
 	.llong .sys32_old_getrlimit
@@ -594,7 +594,7 @@
 	.llong .sys_ni_syscall		/* old modify_ldt syscall */
 	.llong .sys32_adjtimex
 	.llong .sys_mprotect		/* 125 */
-	.llong .sys32_sigprocmask
+	.llong .compat_sys_sigprocmask
 	.llong .sys_ni_syscall		/* old create_module syscall */
 	.llong .sys32_init_module
 	.llong .sys32_delete_module
diff -ruN 2.5.58-32bit.5/arch/ppc64/kernel/signal32.c 2.5.58-32bit.6/arch/ppc64/kernel/signal32.c
--- 2.5.58-32bit.5/arch/ppc64/kernel/signal32.c	2003-01-15 14:55:15.000000000 +1100
+++ 2.5.58-32bit.6/arch/ppc64/kernel/signal32.c	2003-01-16 01:44:35.000000000 +1100
@@ -104,8 +104,6 @@
  *
  *  System Calls
  *       sigaction                sys32_sigaction
- *       sigpending               sys32_sigpending
- *       sigprocmask              sys32_sigprocmask
  *       sigreturn                sys32_sigreturn
  *
  *  Note sigsuspend has no special 32 bit routine - uses the 64 bit routine
@@ -147,54 +145,6 @@
 }
 
 
-extern long sys_sigpending(old_sigset_t *set);
-
-long sys32_sigpending(compat_old_sigset_t *set)
-{
-	old_sigset_t s;
-	int ret;
-	mm_segment_t old_fs = get_fs();
-
-	set_fs(KERNEL_DS);
-	ret = sys_sigpending(&s);
-	set_fs(old_fs);
-	if (put_user(s, set))
-		return -EFAULT;
-	return ret;
-}
-
-
-extern long sys_sigprocmask(int how, old_sigset_t *set,
-		old_sigset_t *oset);
-
-/*
- * Note: it is necessary to treat how 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) and the register representation
- * of a signed int (msr in 64-bit mode) is performed.
- */
-long sys32_sigprocmask(u32 how, compat_old_sigset_t *set,
-		compat_old_sigset_t *oset)
-{
-	old_sigset_t s;
-	int ret;
-	mm_segment_t old_fs = get_fs();
-
-	if (set && get_user(s, set))
-		return -EFAULT;
-	set_fs(KERNEL_DS);
-	ret = sys_sigprocmask((int)how, set ? &s : NULL, oset ? &s : NULL);
-	set_fs(old_fs);
-	if (ret)
-		return ret;
-	if (oset && put_user (s, oset))
-		return -EFAULT;
-	return 0;
-}
-
-
-
 /*
  * When we have signals to deliver, we set up on the
  * user stack, going down from the original stack pointer:

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask sparc64
  2003-01-16  3:41 [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask generic Stephen Rothwell
  2003-01-16  3:43 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask ppc64 Stephen Rothwell
@ 2003-01-16  3:45 ` Stephen Rothwell
  2003-01-16  3:46 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask x86_64 Stephen Rothwell
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Stephen Rothwell @ 2003-01-16  3:45 UTC (permalink / raw)
  To: davem; +Cc: torvalds, linux-kernel

Hi Dave,

Hare is the sparc64 part.
-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

diff -ruN 2.5.58-32bit.5/arch/sparc64/kernel/sys_sparc32.c 2.5.58-32bit.6/arch/sparc64/kernel/sys_sparc32.c
--- 2.5.58-32bit.5/arch/sparc64/kernel/sys_sparc32.c	2003-01-15 14:54:34.000000000 +1100
+++ 2.5.58-32bit.6/arch/sparc64/kernel/sys_sparc32.c	2003-01-16 01:43:41.000000000 +1100
@@ -1679,23 +1679,6 @@
 	return ret;
 }
 
-extern asmlinkage int sys_sigprocmask(int how, old_sigset_t *set, old_sigset_t *oset);
-
-asmlinkage int sys32_sigprocmask(int how, compat_old_sigset_t *set, compat_old_sigset_t *oset)
-{
-	old_sigset_t s;
-	int ret;
-	mm_segment_t old_fs = get_fs();
-	
-	if (set && get_user (s, set)) return -EFAULT;
-	set_fs (KERNEL_DS);
-	ret = sys_sigprocmask(how, set ? &s : NULL, oset ? &s : NULL);
-	set_fs (old_fs);
-	if (ret) return ret;
-	if (oset && put_user (s, oset)) return -EFAULT;
-	return 0;
-}
-
 extern asmlinkage int sys_rt_sigprocmask(int how, sigset_t *set, sigset_t *oset, size_t sigsetsize);
 
 asmlinkage int sys32_rt_sigprocmask(int how, compat_sigset_t *set, compat_sigset_t *oset, compat_size_t sigsetsize)
@@ -1732,21 +1715,6 @@
 	return 0;
 }
 
-extern asmlinkage int sys_sigpending(old_sigset_t *set);
-
-asmlinkage int sys32_sigpending(compat_old_sigset_t *set)
-{
-	old_sigset_t s;
-	int ret;
-	mm_segment_t old_fs = get_fs();
-		
-	set_fs (KERNEL_DS);
-	ret = sys_sigpending(&s);
-	set_fs (old_fs);
-	if (put_user (s, set)) return -EFAULT;
-	return ret;
-}
-
 extern asmlinkage int sys_rt_sigpending(sigset_t *set, size_t sigsetsize);
 
 asmlinkage int sys32_rt_sigpending(compat_sigset_t *set, compat_size_t sigsetsize)
diff -ruN 2.5.58-32bit.5/arch/sparc64/kernel/systbls.S 2.5.58-32bit.6/arch/sparc64/kernel/systbls.S
--- 2.5.58-32bit.5/arch/sparc64/kernel/systbls.S	2003-01-14 09:57:52.000000000 +1100
+++ 2.5.58-32bit.6/arch/sparc64/kernel/systbls.S	2003-01-16 01:43:27.000000000 +1100
@@ -55,7 +55,7 @@
 	.word sys_quotactl, sys_set_tid_address, sys32_mount, sys_ustat, sys_setxattr
 /*170*/	.word sys_lsetxattr, sys_fsetxattr, sys_getxattr, sys_lgetxattr, sys32_getdents
 	.word sys_setsid, sys_fchdir, sys_fgetxattr, sys_listxattr, sys_llistxattr
-/*180*/	.word sys_flistxattr, sys_removexattr, sys_lremovexattr, sys32_sigpending, sys_ni_syscall
+/*180*/	.word sys_flistxattr, sys_removexattr, sys_lremovexattr, compat_sys_sigpending, sys_ni_syscall
 	.word sys_setpgid, sys_fremovexattr, sys_tkill, sys_exit_group, sparc64_newuname
 /*190*/	.word sys32_init_module, sparc64_personality, sys_remap_file_pages, sys_epoll_create, sys_epoll_ctl
 	.word sys_epoll_wait, sys_nis_syscall, sys_getppid, sys32_sigaction, sys_sgetmask
@@ -63,7 +63,7 @@
 	.word sys32_readahead, sys32_socketcall, sys_syslog, sys32_lookup_dcookie, sys_nis_syscall
 /*210*/	.word sys_nis_syscall, sys_nis_syscall, sys_waitpid, sys_swapoff, sys32_sysinfo
 	.word sys32_ipc, sys32_sigreturn, sys_clone, sys_nis_syscall, sys32_adjtimex
-/*220*/	.word sys32_sigprocmask, sys_ni_syscall, sys32_delete_module, sys_ni_syscall, sys_getpgid
+/*220*/	.word compat_sys_sigprocmask, sys_ni_syscall, sys32_delete_module, sys_ni_syscall, sys_getpgid
 	.word sys32_bdflush, sys32_sysfs, sys_nis_syscall, sys32_setfsuid16, sys32_setfsgid16
 
 	/* 234 and 235 were for the hugetlb syscalls.  They can be reused */
@@ -206,7 +206,7 @@
 	.word sunos_nosys, sunos_getdents, sys_setsid
 	.word sys_fchdir, sunos_nosys, sunos_nosys
 	.word sunos_nosys, sunos_nosys, sunos_nosys
-	.word sunos_nosys, sys32_sigpending, sunos_nosys
+	.word sunos_nosys, compat_sys_sigpending, sunos_nosys
 	.word sys_setpgid, sunos_pathconf, sunos_fpathconf
 	.word sunos_sysconf, sunos_uname, sunos_nosys
 	.word sunos_nosys, sunos_nosys, sunos_nosys

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask x86_64
  2003-01-16  3:41 [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask generic Stephen Rothwell
  2003-01-16  3:43 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask ppc64 Stephen Rothwell
  2003-01-16  3:45 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask sparc64 Stephen Rothwell
@ 2003-01-16  3:46 ` Stephen Rothwell
  2003-01-16  3:47 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask ia64 Stephen Rothwell
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Stephen Rothwell @ 2003-01-16  3:46 UTC (permalink / raw)
  To: ak; +Cc: torvalds, linux-kernel

Hi Andi,

Here is the x86_64 part.
-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

diff -ruN 2.5.58-32bit.5/arch/x86_64/ia32/ia32entry.S 2.5.58-32bit.6/arch/x86_64/ia32/ia32entry.S
--- 2.5.58-32bit.5/arch/x86_64/ia32/ia32entry.S	2003-01-13 11:07:06.000000000 +1100
+++ 2.5.58-32bit.6/arch/x86_64/ia32/ia32entry.S	2003-01-16 01:44:51.000000000 +1100
@@ -273,7 +273,7 @@
 	.quad sys_setreuid16	/* 70 */
 	.quad sys_setregid16
 	.quad stub32_sigsuspend
-	.quad sys32_sigpending
+	.quad compat_sys_sigpending
 	.quad sys_sethostname
 	.quad sys32_setrlimit	/* 75 */
 	.quad sys32_old_getrlimit	/* old_getrlimit */
@@ -326,7 +326,7 @@
 	.quad sys32_modify_ldt
 	.quad sys32_adjtimex
 	.quad sys32_mprotect		/* 125 */
-	.quad sys32_sigprocmask
+	.quad compat_sys_sigprocmask
 	.quad sys32_module_warning	/* create_module */
 	.quad sys_init_module
 	.quad sys_delete_module
diff -ruN 2.5.58-32bit.5/arch/x86_64/ia32/sys_ia32.c 2.5.58-32bit.6/arch/x86_64/ia32/sys_ia32.c
--- 2.5.58-32bit.5/arch/x86_64/ia32/sys_ia32.c	2003-01-15 16:04:33.000000000 +1100
+++ 2.5.58-32bit.6/arch/x86_64/ia32/sys_ia32.c	2003-01-16 01:45:05.000000000 +1100
@@ -1224,41 +1224,6 @@
 	return ret;
 }
 
-extern asmlinkage long sys_sigprocmask(int how, old_sigset_t *set,
-				      old_sigset_t *oset);
-
-asmlinkage long
-sys32_sigprocmask(int how, compat_old_sigset_t *set, compat_old_sigset_t *oset)
-{
-	old_sigset_t s;
-	int ret;
-	mm_segment_t old_fs = get_fs();
-	
-	if (set && get_user (s, set)) return -EFAULT;
-	set_fs (KERNEL_DS);
-	ret = sys_sigprocmask(how, set ? &s : NULL, oset ? &s : NULL);
-	set_fs (old_fs);
-	if (ret) return ret;
-	if (oset && put_user (s, oset)) return -EFAULT;
-	return 0;
-}
-
-extern asmlinkage long sys_sigpending(old_sigset_t *set);
-
-asmlinkage long
-sys32_sigpending(compat_old_sigset_t *set)
-{
-	old_sigset_t s;
-	int ret;
-	mm_segment_t old_fs = get_fs();
-		
-	set_fs (KERNEL_DS);
-	ret = sys_sigpending(&s);
-	set_fs (old_fs);
-	if (put_user (s, set)) return -EFAULT;
-	return ret;
-}
-
 extern asmlinkage long sys_rt_sigpending(sigset_t *set, size_t sigsetsize);
 
 asmlinkage long

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask ia64
  2003-01-16  3:41 [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask generic Stephen Rothwell
                   ` (2 preceding siblings ...)
  2003-01-16  3:46 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask x86_64 Stephen Rothwell
@ 2003-01-16  3:47 ` Stephen Rothwell
  2003-01-16  3:49 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask s390x Stephen Rothwell
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Stephen Rothwell @ 2003-01-16  3:47 UTC (permalink / raw)
  To: davidm; +Cc: torvalds, linux-kernel

Hi David,

Here is the ia64 part.
-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

diff -ruN 2.5.58-32bit.5/arch/ia64/ia32/ia32_entry.S 2.5.58-32bit.6/arch/ia64/ia32/ia32_entry.S
--- 2.5.58-32bit.5/arch/ia64/ia32/ia32_entry.S	2003-01-13 11:07:06.000000000 +1100
+++ 2.5.58-32bit.6/arch/ia64/ia32/ia32_entry.S	2003-01-16 01:39:59.000000000 +1100
@@ -264,7 +264,7 @@
 	data8 sys_setreuid	/* 16-bit version */	  /* 70 */
 	data8 sys_setregid	/* 16-bit version */
 	data8 sys32_sigsuspend
-	data8 sys32_sigpending
+	data8 compat_sys_sigpending
 	data8 sys_sethostname
 	data8 sys32_setrlimit	  /* 75 */
 	data8 sys32_old_getrlimit
@@ -317,7 +317,7 @@
 	data8 sys32_modify_ldt
 	data8 sys32_ni_syscall	/* adjtimex */
 	data8 sys32_mprotect	  /* 125 */
-	data8 sys32_sigprocmask
+	data8 compat_sys_sigprocmask
 	data8 sys32_ni_syscall	/* create_module */
 	data8 sys32_ni_syscall	/* init_module */
 	data8 sys32_ni_syscall	/* delete_module */
diff -ruN 2.5.58-32bit.5/arch/ia64/ia32/ia32_signal.c 2.5.58-32bit.6/arch/ia64/ia32/ia32_signal.c
--- 2.5.58-32bit.5/arch/ia64/ia32/ia32_signal.c	2003-01-15 16:03:42.000000000 +1100
+++ 2.5.58-32bit.6/arch/ia64/ia32/ia32_signal.c	2003-01-16 01:39:47.000000000 +1100
@@ -587,12 +587,6 @@
 }
 
 asmlinkage long
-sys32_sigprocmask (int how, unsigned int *set, unsigned int *oset)
-{
-	return sys32_rt_sigprocmask(how, (compat_sigset_t *) set, (compat_sigset_t *) oset, sizeof(*set));
-}
-
-asmlinkage long
 sys32_rt_sigtimedwait (compat_sigset_t *uthese, siginfo_t32 *uinfo,
 		struct compat_timespec *uts, unsigned int sigsetsize)
 {
diff -ruN 2.5.58-32bit.5/arch/ia64/ia32/sys_ia32.c 2.5.58-32bit.6/arch/ia64/ia32/sys_ia32.c
--- 2.5.58-32bit.5/arch/ia64/ia32/sys_ia32.c	2003-01-13 11:07:06.000000000 +1100
+++ 2.5.58-32bit.6/arch/ia64/ia32/sys_ia32.c	2003-01-16 00:30:16.000000000 +1100
@@ -3420,12 +3420,6 @@
 	return ret;
 }
 
-asmlinkage long
-sys32_sigpending (unsigned int *set)
-{
-	return do_sigpending(set, sizeof(*set));
-}
-
 struct sysinfo32 {
 	s32 uptime;
 	u32 loads[3];

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask s390x
  2003-01-16  3:41 [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask generic Stephen Rothwell
                   ` (3 preceding siblings ...)
  2003-01-16  3:47 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask ia64 Stephen Rothwell
@ 2003-01-16  3:49 ` Stephen Rothwell
  2003-01-16  3:50 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask mips64 Stephen Rothwell
  2003-01-16  3:51 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask parisc Stephen Rothwell
  6 siblings, 0 replies; 9+ messages in thread
From: Stephen Rothwell @ 2003-01-16  3:49 UTC (permalink / raw)
  To: torvalds; +Cc: linux-kernel, schwidefsky

Hi Linus,

Here is the s390x part.
-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

diff -ruN 2.5.58-32bit.5/arch/s390x/kernel/entry.S 2.5.58-32bit.6/arch/s390x/kernel/entry.S
--- 2.5.58-32bit.5/arch/s390x/kernel/entry.S	2003-01-14 09:57:51.000000000 +1100
+++ 2.5.58-32bit.6/arch/s390x/kernel/entry.S	2003-01-16 01:42:59.000000000 +1100
@@ -464,7 +464,7 @@
         .long  SYSCALL(sys_ni_syscall,sys32_setreuid16_wrapper) /* old setreuid16 syscall */
         .long  SYSCALL(sys_ni_syscall,sys32_setregid16_wrapper) /* old setregid16 syscall */
         .long  SYSCALL(sys_sigsuspend_glue,sys32_sigsuspend_glue)
-        .long  SYSCALL(sys_sigpending,sys32_sigpending_wrapper)
+        .long  SYSCALL(sys_sigpending,compat_sys_sigpending_wrapper)
         .long  SYSCALL(sys_sethostname,sys32_sethostname_wrapper)
         .long  SYSCALL(sys_setrlimit,sys32_setrlimit_wrapper)   /* 75 */
         .long  SYSCALL(sys_getrlimit,sys32_old_getrlimit_wrapper) 
@@ -517,7 +517,7 @@
         .long  SYSCALL(sys_ni_syscall,sys_ni_syscall) /* modify_ldt for i386 */
         .long  SYSCALL(sys_adjtimex,sys32_adjtimex_wrapper)
         .long  SYSCALL(sys_mprotect,sys32_mprotect_wrapper) /* 125 */
-        .long  SYSCALL(sys_sigprocmask,sys32_sigprocmask_wrapper)
+        .long  SYSCALL(sys_sigprocmask,compat_sys_sigprocmask_wrapper)
         .long  SYSCALL(sys_ni_syscall,sys_ni_syscall) /* old "create module" */
         .long  SYSCALL(sys_init_module,sys32_init_module_wrapper)
         .long  SYSCALL(sys_delete_module,sys32_delete_module_wrapper)
diff -ruN 2.5.58-32bit.5/arch/s390x/kernel/linux32.c 2.5.58-32bit.6/arch/s390x/kernel/linux32.c
--- 2.5.58-32bit.5/arch/s390x/kernel/linux32.c	2003-01-15 14:51:38.000000000 +1100
+++ 2.5.58-32bit.6/arch/s390x/kernel/linux32.c	2003-01-16 01:43:15.000000000 +1100
@@ -1621,23 +1621,6 @@
 	return ret;
 }
 
-extern asmlinkage int sys_sigprocmask(int how, old_sigset_t *set, old_sigset_t *oset);
-
-asmlinkage int sys32_sigprocmask(int how, compat_old_sigset_t *set, compat_old_sigset_t *oset)
-{
-	old_sigset_t s;
-	int ret;
-	mm_segment_t old_fs = get_fs();
-	
-	if (set && get_user (s, set)) return -EFAULT;
-	set_fs (KERNEL_DS);
-	ret = sys_sigprocmask(how, set ? &s : NULL, oset ? &s : NULL);
-	set_fs (old_fs);
-	if (ret) return ret;
-	if (oset && put_user (s, oset)) return -EFAULT;
-	return 0;
-}
-
 extern asmlinkage int sys_rt_sigprocmask(int how, sigset_t *set, sigset_t *oset, size_t sigsetsize);
 
 asmlinkage int sys32_rt_sigprocmask(int how, compat_sigset_t *set, compat_sigset_t *oset, compat_size_t sigsetsize)
@@ -1674,21 +1657,6 @@
 	return 0;
 }
 
-extern asmlinkage int sys_sigpending(old_sigset_t *set);
-
-asmlinkage int sys32_sigpending(compat_old_sigset_t *set)
-{
-	old_sigset_t s;
-	int ret;
-	mm_segment_t old_fs = get_fs();
-		
-	set_fs (KERNEL_DS);
-	ret = sys_sigpending(&s);
-	set_fs (old_fs);
-	if (put_user (s, set)) return -EFAULT;
-	return ret;
-}
-
 extern asmlinkage int sys_rt_sigpending(sigset_t *set, size_t sigsetsize);
 
 asmlinkage int sys32_rt_sigpending(compat_sigset_t *set, compat_size_t sigsetsize)
diff -ruN 2.5.58-32bit.5/arch/s390x/kernel/wrapper32.S 2.5.58-32bit.6/arch/s390x/kernel/wrapper32.S
--- 2.5.58-32bit.5/arch/s390x/kernel/wrapper32.S	2003-01-14 09:57:51.000000000 +1100
+++ 2.5.58-32bit.6/arch/s390x/kernel/wrapper32.S	2003-01-16 01:42:40.000000000 +1100
@@ -288,10 +288,10 @@
 
 #sys32_sigsuspend_wrapper		# done in sigsuspend_glue 
 
-	.globl  sys32_sigpending_wrapper 
-sys32_sigpending_wrapper:
-	llgtr	%r2,%r2			# old_sigset_emu31_t *
-	jg	sys32_sigpending	# branch to system call
+	.globl  compat_sys_sigpending_wrapper 
+compat_sys_sigpending_wrapper:
+	llgtr	%r2,%r2			# compat_old_sigset_t *
+	jg	compat_sys_sigpending	# branch to system call
 
 	.globl  sys32_sethostname_wrapper 
 sys32_sethostname_wrapper:
@@ -557,12 +557,12 @@
 	llgfr	%r4,%r4			# unsigned long
 	jg	sys_mprotect		# branch to system call
 
-	.globl  sys32_sigprocmask_wrapper 
-sys32_sigprocmask_wrapper:
+	.globl  compat_sys_sigprocmask_wrapper 
+compat_sys_sigprocmask_wrapper:
 	lgfr	%r2,%r2			# int
-	llgtr	%r3,%r3			# old_sigset_emu31 *
-	llgtr	%r4,%r4			# old_sigset_emu31 *
-	jg	sys32_sigprocmask		# branch to system call
+	llgtr	%r3,%r3			# compat_old_sigset_t *
+	llgtr	%r4,%r4			# compat_old_sigset_t *
+	jg	compat_sys_sigprocmask		# branch to system call
 
 	.globl  sys32_init_module_wrapper 
 sys32_init_module_wrapper:

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask mips64
  2003-01-16  3:41 [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask generic Stephen Rothwell
                   ` (4 preceding siblings ...)
  2003-01-16  3:49 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask s390x Stephen Rothwell
@ 2003-01-16  3:50 ` Stephen Rothwell
  2003-01-16  3:53   ` Ralf Baechle
  2003-01-16  3:51 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask parisc Stephen Rothwell
  6 siblings, 1 reply; 9+ messages in thread
From: Stephen Rothwell @ 2003-01-16  3:50 UTC (permalink / raw)
  To: ralf; +Cc: torvalds, linux-kernel

Hi Ralf,

Here is the mips64 part.
-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

diff -ruN 2.5.58-32bit.5/arch/mips64/kernel/scall_o32.S 2.5.58-32bit.6/arch/mips64/kernel/scall_o32.S
--- 2.5.58-32bit.5/arch/mips64/kernel/scall_o32.S	2003-01-13 11:07:06.000000000 +1100
+++ 2.5.58-32bit.6/arch/mips64/kernel/scall_o32.S	2003-01-16 01:40:09.000000000 +1100
@@ -306,7 +306,7 @@
 	sys	sys_setreuid	2			/* 4070 */
 	sys	sys_setregid	2
 	sys	sys32_sigsuspend	0
-	sys	sys32_sigpending	1
+	sys	compat_sys_sigpending	1
 	sys	sys_sethostname	2
 	sys	sys32_setrlimit	2			/* 4075 */
 	sys	sys32_getrlimit	2
@@ -359,7 +359,7 @@
 	sys	sys_ni_syscall	0	/* sys_modify_ldt */
 	sys	sys32_adjtimex	1
 	sys	sys_mprotect	3			/* 4125 */
-	sys	sys32_sigprocmask	3
+	sys	compat_sys_sigprocmask	3
 	sys	sys_create_module 2
 	sys	sys_init_module	5
 	sys	sys_delete_module 1
diff -ruN 2.5.58-32bit.5/arch/mips64/kernel/signal32.c 2.5.58-32bit.6/arch/mips64/kernel/signal32.c
--- 2.5.58-32bit.5/arch/mips64/kernel/signal32.c	2003-01-15 16:12:21.000000000 +1100
+++ 2.5.58-32bit.6/arch/mips64/kernel/signal32.c	2003-01-16 01:40:36.000000000 +1100
@@ -694,44 +694,6 @@
 	return 0;
 }
 
-extern asmlinkage int sys_sigprocmask(int how, old_sigset_t *set,
-						old_sigset_t *oset);
-
-asmlinkage int sys32_sigprocmask(int how, compat_old_sigset_t *set, 
-				 compat_old_sigset_t *oset)
-{
-	old_sigset_t s;
-	int ret;
-	mm_segment_t old_fs = get_fs();
-
-	if (set && get_user (s, set))
-		return -EFAULT;
-	set_fs (KERNEL_DS);
-	ret = sys_sigprocmask(how, set ? &s : NULL, oset ? &s : NULL);
-	set_fs (old_fs);
-	if (!ret && oset && put_user (s, oset))
-		return -EFAULT;
-	return ret;
-}
-
-asmlinkage long sys_sigpending(old_sigset_t *set);
-
-asmlinkage int sys32_sigpending(compat_old_sigset_t *set)
-{
-	old_sigset_t pending;
-	int ret;
-	mm_segment_t old_fs = get_fs();
-
-	set_fs (KERNEL_DS);
-	ret = sys_sigpending(&pending);
-	set_fs (old_fs);
-
-	if (put_user(pending, set))
-		return -EFAULT;
-
-	return ret;
-}
-
 asmlinkage int sys32_rt_sigaction(int sig, const struct sigaction32 *act,
 				  struct sigaction32 *oact,
 				  unsigned int sigsetsize)

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask parisc
  2003-01-16  3:41 [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask generic Stephen Rothwell
                   ` (5 preceding siblings ...)
  2003-01-16  3:50 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask mips64 Stephen Rothwell
@ 2003-01-16  3:51 ` Stephen Rothwell
  6 siblings, 0 replies; 9+ messages in thread
From: Stephen Rothwell @ 2003-01-16  3:51 UTC (permalink / raw)
  To: matthew; +Cc: torvalds, linux-kernel

Hi Willy,

Here is the parisc part.
-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

diff -ruN 2.5.58-32bit.5/arch/parisc/kernel/signal32.c 2.5.58-32bit.6/arch/parisc/kernel/signal32.c
--- 2.5.58-32bit.5/arch/parisc/kernel/signal32.c	2003-01-15 14:49:04.000000000 +1100
+++ 2.5.58-32bit.6/arch/parisc/kernel/signal32.c	2003-01-16 01:41:56.000000000 +1100
@@ -17,57 +17,6 @@
 	struct sigaction32 sa;
 };
 
-static int
-put_old_sigset32(compat_old_sigset_t *up, old_sigset_t *set)
-{
-	compat_old_sigset_t set32 = *set;
-	return put_user(set32, up);
-}
-
-static int
-get_old_segset32(compat_old_sigset_t *up, old_sigset_t *set)
-{
-	compat_old_sigset_t set32;
-	int r;
-
-	if ((r = get_user(set32, up)) == 0)
-		*set = set32;
-
-	return r;
-}
-
-long
-sys32_sigpending(compat_old_sigset_t *set)
-{
-	extern long sys_sigpending(old_sigset_t *set);
-	old_sigset_t pending;
-	int ret;
-
-	KERNEL_SYSCALL(ret, sys_sigpending, &pending);
-
-	/* can't put_user an old_sigset_t -- it is too big */
-	if (put_old_sigset32(set, &pending))
-		return -EFAULT;
-
-	return ret;
-}
-
-int sys32_sigprocmask(int how, compat_old_sigset_t *set, 
-				 compat_old_sigset_t *oset)
-{
-	extern int sys_sigprocmask(int how, old_sigset_t *set, 
-				 old_sigset_t *oset);
-	old_sigset_t s;
-	int ret;
-
-	if (set && get_old_segset32 (set, &s))
-		return -EFAULT;
-	KERNEL_SYSCALL(ret, sys_sigprocmask, how, set ? &s : NULL, oset ? &s : NULL);
-	if (!ret && oset && put_old_sigset32(oset, &s))
-		return -EFAULT;
-	return ret;
-}
-
 static inline void
 sigset_32to64(sigset_t *s64, compat_sigset_t *s32)
 {
diff -ruN 2.5.58-32bit.5/arch/parisc/kernel/syscall.S 2.5.58-32bit.6/arch/parisc/kernel/syscall.S
--- 2.5.58-32bit.5/arch/parisc/kernel/syscall.S	2003-01-15 11:20:31.000000000 +1100
+++ 2.5.58-32bit.6/arch/parisc/kernel/syscall.S	2003-01-16 01:46:03.000000000 +1100
@@ -428,7 +428,7 @@
 	ENTRY_SAME(setreuid)	/* 70 */
 	ENTRY_SAME(setregid)
 	ENTRY_SAME(mincore)
-	ENTRY_DIFF(sigpending)
+	ENTRY_COMP(sigpending)
 	ENTRY_SAME(sethostname)
 	/* Following 3 have linux-common-code structs containing longs -( */
 	ENTRY_DIFF(setrlimit)	/* 75 */
@@ -496,7 +496,7 @@
 	ENTRY_DIFF(adjtimex)
 	ENTRY_SAME(mprotect)	/* 125 */
 	/* old_sigset_t forced to 32 bits.  Beware glibc sigset_t */
-	ENTRY_DIFF(sigprocmask)
+	ENTRY_COMP(sigprocmask)
 	ENTRY_SAME(ni_syscall)		/* create_module */
 	ENTRY_SAME(init_module)
 	ENTRY_SAME(delete_module)

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask mips64
  2003-01-16  3:50 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask mips64 Stephen Rothwell
@ 2003-01-16  3:53   ` Ralf Baechle
  0 siblings, 0 replies; 9+ messages in thread
From: Ralf Baechle @ 2003-01-16  3:53 UTC (permalink / raw)
  To: Stephen Rothwell; +Cc: torvalds, linux-kernel

On Thu, Jan 16, 2003 at 02:50:31PM +1100, Stephen Rothwell wrote:

> Hi Ralf,
> 
> Here is the mips64 part.

Thanks, looks good.

  Ralf

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2003-01-16  3:44 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-01-16  3:41 [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask generic Stephen Rothwell
2003-01-16  3:43 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask ppc64 Stephen Rothwell
2003-01-16  3:45 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask sparc64 Stephen Rothwell
2003-01-16  3:46 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask x86_64 Stephen Rothwell
2003-01-16  3:47 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask ia64 Stephen Rothwell
2003-01-16  3:49 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask s390x Stephen Rothwell
2003-01-16  3:50 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask mips64 Stephen Rothwell
2003-01-16  3:53   ` Ralf Baechle
2003-01-16  3:51 ` [PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask parisc Stephen Rothwell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox