All of lore.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.