* [PATCH][COMPAT] compat_{old_}sigset_t generic part
@ 2003-01-15 6:34 Stephen Rothwell
2003-01-15 6:36 ` [PATCH][COMPAT] compat_{old_}sigset_t ppc64 Stephen Rothwell
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: Stephen Rothwell @ 2003-01-15 6:34 UTC (permalink / raw)
To: Linus
Cc: LKML, anton, David S. Miller, ak, davidm, schwidefsky, ralf, matthew
Hi Linus,
This patch creates compat_sigset_t and compat_old_sigset_t i.e. just the
types. This is just the generic part, the architecture specific parts
follow. The diffstat for the whole patch looks like this:
arch/ia64/ia32/ia32_signal.c | 26 +++++++++++------------
arch/mips64/kernel/signal32.c | 33 +++++++++++------------------
arch/parisc/kernel/signal.c | 7 +++---
arch/parisc/kernel/signal32.c | 32 +++++++++++++---------------
arch/parisc/kernel/sys32.h | 7 ------
arch/ppc64/kernel/signal32.c | 42 +++++++++++++++++++-------------------
arch/s390x/kernel/linux32.c | 24 ++++++++++-----------
arch/s390x/kernel/linux32.h | 15 +++----------
arch/s390x/kernel/signal32.c | 15 +++++++------
arch/sparc64/kernel/signal.c | 5 +++-
arch/sparc64/kernel/signal32.c | 16 +++++++-------
arch/sparc64/kernel/sys_sparc32.c | 34 +++++++++++++++---------------
arch/sparc64/kernel/sys_sunos32.c | 2 -
arch/x86_64/ia32/ia32_signal.c | 11 +++++----
arch/x86_64/ia32/sys_ia32.c | 38 +++++++++++++++++-----------------
include/asm-ia64/compat.h | 7 ++++++
include/asm-ia64/ia32.h | 14 +-----------
include/asm-mips64/compat.h | 7 ++++++
include/asm-mips64/signal.h | 1
include/asm-parisc/compat.h | 9 +++++++-
include/asm-ppc64/compat.h | 7 ++++++
include/asm-ppc64/ppc32.h | 14 +-----------
include/asm-s390x/compat.h | 9 +++++++-
include/asm-sparc64/compat.h | 7 ++++++
include/asm-sparc64/signal.h | 19 ++++-------------
include/asm-x86_64/compat.h | 7 ++++++
include/asm-x86_64/ia32.h | 16 ++------------
include/linux/compat.h | 6 +++++
28 files changed, 215 insertions(+), 215 deletions(-)
So, overall no change :-)
Applying just this generic part will break all the 64 bit architectures.
Hopefully this will give the architecture maintainer incentive to apply my
other patches. :-)
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
diff -ruN 2.5.58-32bit.4/include/linux/compat.h 2.5.58-32bit.5/include/linux/compat.h
--- 2.5.58-32bit.4/include/linux/compat.h 2003-01-09 16:24:05.000000000 +1100
+++ 2.5.58-32bit.5/include/linux/compat.h 2003-01-15 16:33:09.000000000 +1100
@@ -33,6 +33,12 @@
compat_clock_t tms_cstime;
};
+#define _COMPAT_NSIG_WORDS (_COMPAT_NSIG / _COMPAT_NSIG_BPW)
+
+typedef struct {
+ compat_sigset_word sig[_COMPAT_NSIG_WORDS];
+} compat_sigset_t;
+
extern int cp_compat_stat(struct kstat *, struct compat_stat *);
extern int get_compat_flock(struct flock *, struct compat_flock *);
extern int put_compat_flock(struct flock *, struct compat_flock *);
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH][COMPAT] compat_{old_}sigset_t ppc64
2003-01-15 6:34 [PATCH][COMPAT] compat_{old_}sigset_t generic part Stephen Rothwell
@ 2003-01-15 6:36 ` Stephen Rothwell
2003-01-15 6:39 ` [PATCH][COMPAT] compat_{old_}sigset_t sparc64 Stephen Rothwell
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Stephen Rothwell @ 2003-01-15 6:36 UTC (permalink / raw)
To: anton; +Cc: torvalds, linux-kernel
Hi Anton,
Here is the ppc64 part of the patch
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
diff -ruN 2.5.58-32bit.4/arch/ppc64/kernel/signal32.c 2.5.58-32bit.5/arch/ppc64/kernel/signal32.c
--- 2.5.58-32bit.4/arch/ppc64/kernel/signal32.c 2003-01-14 09:57:51.000000000 +1100
+++ 2.5.58-32bit.5/arch/ppc64/kernel/signal32.c 2003-01-15 14:55:15.000000000 +1100
@@ -124,7 +124,7 @@
sig = -sig;
if (act) {
- old_sigset_t32 mask;
+ compat_old_sigset_t mask;
if (get_user((long)new_ka.sa.sa_handler, &act->sa_handler) ||
__get_user((long)new_ka.sa.sa_restorer, &act->sa_restorer) ||
@@ -149,7 +149,7 @@
extern long sys_sigpending(old_sigset_t *set);
-long sys32_sigpending(old_sigset_t32 *set)
+long sys32_sigpending(compat_old_sigset_t *set)
{
old_sigset_t s;
int ret;
@@ -174,8 +174,8 @@
* 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, old_sigset_t32 *set,
- old_sigset_t32 *oset)
+long sys32_sigprocmask(u32 how, compat_old_sigset_t *set,
+ compat_old_sigset_t *oset)
{
old_sigset_t s;
int ret;
@@ -528,16 +528,16 @@
{
struct k_sigaction new_ka, old_ka;
int ret;
- sigset32_t set32;
+ compat_sigset_t set32;
/* XXX: Don't preclude handling different sized sigset_t's. */
- if (sigsetsize != sizeof(sigset32_t))
+ if (sigsetsize != sizeof(compat_sigset_t))
return -EINVAL;
if (act) {
ret = get_user((long)new_ka.sa.sa_handler, &act->sa_handler);
ret |= __copy_from_user(&set32, &act->sa_mask,
- sizeof(sigset32_t));
+ sizeof(compat_sigset_t));
switch (_NSIG_WORDS) {
case 4: new_ka.sa.sa_mask.sig[3] = set32.sig[6]
| (((long)set32.sig[7]) << 32);
@@ -571,7 +571,7 @@
}
ret = put_user((long)old_ka.sa.sa_handler, &oact->sa_handler);
ret |= __copy_to_user(&oact->sa_mask, &set32,
- sizeof(sigset32_t));
+ sizeof(compat_sigset_t));
ret |= __put_user(old_ka.sa.sa_flags, &oact->sa_flags);
}
return ret;
@@ -588,16 +588,16 @@
* 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_rt_sigprocmask(u32 how, sigset32_t *set,
- sigset32_t *oset, size_t sigsetsize)
+long sys32_rt_sigprocmask(u32 how, compat_sigset_t *set,
+ compat_sigset_t *oset, size_t sigsetsize)
{
sigset_t s;
- sigset32_t s32;
+ compat_sigset_t s32;
int ret;
mm_segment_t old_fs = get_fs();
if (set) {
- if (copy_from_user (&s32, set, sizeof(sigset32_t)))
+ if (copy_from_user (&s32, set, sizeof(compat_sigset_t)))
return -EFAULT;
switch (_NSIG_WORDS) {
@@ -621,7 +621,7 @@
case 2: s32.sig[3] = (s.sig[1] >> 32); s32.sig[2] = s.sig[1];
case 1: s32.sig[1] = (s.sig[0] >> 32); s32.sig[0] = s.sig[0];
}
- if (copy_to_user (oset, &s32, sizeof(sigset32_t)))
+ if (copy_to_user (oset, &s32, sizeof(compat_sigset_t)))
return -EFAULT;
}
return 0;
@@ -631,10 +631,10 @@
extern long sys_rt_sigpending(sigset_t *set, size_t sigsetsize);
-long sys32_rt_sigpending(sigset32_t *set, compat_size_t sigsetsize)
+long sys32_rt_sigpending(compat_sigset_t *set, compat_size_t sigsetsize)
{
sigset_t s;
- sigset32_t s32;
+ compat_sigset_t s32;
int ret;
mm_segment_t old_fs = get_fs();
@@ -648,7 +648,7 @@
case 2: s32.sig[3] = (s.sig[1] >> 32); s32.sig[2] = s.sig[1];
case 1: s32.sig[1] = (s.sig[0] >> 32); s32.sig[0] = s.sig[0];
}
- if (copy_to_user (set, &s32, sizeof(sigset32_t)))
+ if (copy_to_user (set, &s32, sizeof(compat_sigset_t)))
return -EFAULT;
}
return ret;
@@ -702,17 +702,17 @@
siginfo_t *uinfo, const struct timespec *uts,
size_t sigsetsize);
-long sys32_rt_sigtimedwait(sigset32_t *uthese, siginfo_t32 *uinfo,
+long sys32_rt_sigtimedwait(compat_sigset_t *uthese, siginfo_t32 *uinfo,
struct compat_timespec *uts, compat_size_t sigsetsize)
{
sigset_t s;
- sigset32_t s32;
+ compat_sigset_t s32;
struct timespec t;
int ret;
mm_segment_t old_fs = get_fs();
siginfo_t info;
- if (copy_from_user(&s32, uthese, sizeof(sigset32_t)))
+ if (copy_from_user(&s32, uthese, sizeof(compat_sigset_t)))
return -EFAULT;
switch (_NSIG_WORDS) {
case 4: s.sig[3] = s32.sig[6] | (((long)s32.sig[7]) << 32);
@@ -803,11 +803,11 @@
extern int do_signal(sigset_t *oldset, struct pt_regs *regs);
-int sys32_rt_sigsuspend(sigset32_t* unewset, size_t sigsetsize, int p3,
+int sys32_rt_sigsuspend(compat_sigset_t* unewset, size_t sigsetsize, int p3,
int p4, int p6, int p7, struct pt_regs *regs)
{
sigset_t saveset, newset;
- sigset32_t s32;
+ compat_sigset_t s32;
/* XXX: Don't preclude handling different sized sigset_t's. */
if (sigsetsize != sizeof(sigset_t))
diff -ruN 2.5.58-32bit.4/include/asm-ppc64/compat.h 2.5.58-32bit.5/include/asm-ppc64/compat.h
--- 2.5.58-32bit.4/include/asm-ppc64/compat.h 2003-01-14 09:57:58.000000000 +1100
+++ 2.5.58-32bit.5/include/asm-ppc64/compat.h 2003-01-15 16:36:43.000000000 +1100
@@ -77,4 +77,11 @@
int f_spare[6];
};
+typedef u32 compat_old_sigset_t;
+
+#define _COMPAT_NSIG 64
+#define _COMPAT_NSIG_BPW 32
+
+typedef u32 compat_sigset_word;
+
#endif /* _ASM_PPC64_COMPAT_H */
diff -ruN 2.5.58-32bit.4/include/asm-ppc64/ppc32.h 2.5.58-32bit.5/include/asm-ppc64/ppc32.h
--- 2.5.58-32bit.4/include/asm-ppc64/ppc32.h 2003-01-14 09:57:58.000000000 +1100
+++ 2.5.58-32bit.5/include/asm-ppc64/ppc32.h 2003-01-15 15:05:37.000000000 +1100
@@ -94,32 +94,22 @@
} _sifields;
} siginfo_t32;
-#define __old_sigset_t32 old_sigset_t32
#define __old_sigaction32 old_sigaction32
-typedef unsigned int __old_sigset_t32;
struct __old_sigaction32 {
unsigned sa_handler;
- __old_sigset_t32 sa_mask;
+ compat_old_sigset_t sa_mask;
unsigned int sa_flags;
unsigned sa_restorer; /* not used by Linux/SPARC yet */
};
-#define _PPC32_NSIG 64
-#define _PPC32_NSIG_BPW 32
-#define _PPC32_NSIG_WORDS (_PPC32_NSIG / _PPC32_NSIG_BPW)
-
-typedef struct {
- unsigned int sig[_PPC32_NSIG_WORDS];
-} sigset32_t;
-
struct sigaction32 {
unsigned int sa_handler; /* Really a pointer, but need to deal with 32 bits */
unsigned int sa_flags;
unsigned int sa_restorer; /* Another 32 bit pointer */
- sigset32_t sa_mask; /* A 32 bit mask */
+ compat_sigset_t sa_mask; /* A 32 bit mask */
};
typedef struct sigaltstack_32 {
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH][COMPAT] compat_{old_}sigset_t sparc64
2003-01-15 6:34 [PATCH][COMPAT] compat_{old_}sigset_t generic part Stephen Rothwell
2003-01-15 6:36 ` [PATCH][COMPAT] compat_{old_}sigset_t ppc64 Stephen Rothwell
@ 2003-01-15 6:39 ` Stephen Rothwell
2003-01-15 6:40 ` PATCH][COMPAT] compat_{old_}sigset_t x86_64 part Stephen Rothwell
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Stephen Rothwell @ 2003-01-15 6:39 UTC (permalink / raw)
To: davem; +Cc: torvalds, linux-kernel
Hi Dave,
Here is the sparc64 part of the patch. After this, we no longer export
sigset_t32 or old_sigset_t32 to user mode from the kernerl headers. I
assume that is OK.
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
diff -ruN 2.5.58-32bit.4/arch/sparc64/kernel/signal.c 2.5.58-32bit.5/arch/sparc64/kernel/signal.c
--- 2.5.58-32bit.4/arch/sparc64/kernel/signal.c 2002-12-27 15:15:40.000000000 +1100
+++ 2.5.58-32bit.5/arch/sparc64/kernel/signal.c 2003-01-15 14:53:36.000000000 +1100
@@ -9,6 +9,9 @@
*/
#include <linux/config.h>
+#ifdef CONFIG_SPARC32_COMPAT
+#include <linux/compat.h> /* for compat_old_sigset_t */
+#endif
#include <linux/sched.h>
#include <linux/kernel.h>
#include <linux/signal.h>
@@ -247,7 +250,7 @@
#ifdef CONFIG_SPARC32_COMPAT
if (test_thread_flag(TIF_32BIT)) {
- extern asmlinkage void _sigpause32_common(old_sigset_t32,
+ extern asmlinkage void _sigpause32_common(compat_old_sigset_t,
struct pt_regs *);
_sigpause32_common(set, regs);
return;
diff -ruN 2.5.58-32bit.4/arch/sparc64/kernel/signal32.c 2.5.58-32bit.5/arch/sparc64/kernel/signal32.c
--- 2.5.58-32bit.4/arch/sparc64/kernel/signal32.c 2002-12-27 15:15:40.000000000 +1100
+++ 2.5.58-32bit.5/arch/sparc64/kernel/signal32.c 2003-01-15 16:28:53.000000000 +1100
@@ -56,7 +56,7 @@
/* struct sigcontext32 * */ u32 sig_scptr;
int sig_address;
struct sigcontext32 sig_context;
- unsigned extramask[_NSIG_WORDS32 - 1];
+ unsigned extramask[_COMPAT_NSIG_WORDS - 1];
};
/*
@@ -80,7 +80,7 @@
struct sparc_stackf32 ss;
siginfo_t32 info;
struct pt_regs32 regs;
- sigset_t32 mask;
+ compat_sigset_t mask;
/* __siginfo_fpu32_t * */ u32 fpu_save;
unsigned int insns [2];
stack_t32 stack;
@@ -139,7 +139,7 @@
* atomically swap in the new signal mask, and wait for a signal.
* This is really tricky on the Sparc, watch out...
*/
-asmlinkage void _sigpause32_common(old_sigset_t32 set, struct pt_regs *regs)
+asmlinkage void _sigpause32_common(compat_old_sigset_t set, struct pt_regs *regs)
{
sigset_t saveset;
@@ -179,7 +179,7 @@
asmlinkage void do_rt_sigsuspend32(u32 uset, size_t sigsetsize, struct pt_regs *regs)
{
sigset_t oldset, set;
- sigset_t32 set32;
+ compat_sigset_t set32;
/* XXX: Don't preclude handling different sized sigset_t's. */
if (((compat_size_t)sigsetsize) != sizeof(sigset_t)) {
@@ -393,7 +393,7 @@
unsigned pc, npc, fpu_save;
mm_segment_t old_fs;
sigset_t set;
- sigset_t32 seta;
+ compat_sigset_t seta;
stack_t st;
int err, i;
@@ -440,7 +440,7 @@
err |= __get_user(fpu_save, &sf->fpu_save);
if (fpu_save)
err |= restore_fpu_state32(regs, &sf->fpu_state);
- err |= copy_from_user(&seta, &sf->mask, sizeof(sigset_t32));
+ err |= copy_from_user(&seta, &sf->mask, sizeof(compat_sigset_t));
err |= __get_user((long)st.ss_sp, &sf->stack.ss_sp);
err |= __get_user(st.ss_flags, &sf->stack.ss_flags);
err |= __get_user(st.ss_size, &sf->stack.ss_size);
@@ -1098,7 +1098,7 @@
int sigframe_size;
u32 psr;
int i, err;
- sigset_t32 seta;
+ compat_sigset_t seta;
/* 1. Make sure everything is clean */
synchronize_user_stack();
@@ -1160,7 +1160,7 @@
case 1: seta.sig[1] = (oldset->sig[0] >> 32);
seta.sig[0] = oldset->sig[0];
}
- err |= __copy_to_user(&sf->mask, &seta, sizeof(sigset_t32));
+ err |= __copy_to_user(&sf->mask, &seta, sizeof(compat_sigset_t));
err |= copy_in_user((u32 *)sf,
(u32 *)(regs->u_regs[UREG_FP]),
diff -ruN 2.5.58-32bit.4/arch/sparc64/kernel/sys_sparc32.c 2.5.58-32bit.5/arch/sparc64/kernel/sys_sparc32.c
--- 2.5.58-32bit.4/arch/sparc64/kernel/sys_sparc32.c 2003-01-14 09:57:52.000000000 +1100
+++ 2.5.58-32bit.5/arch/sparc64/kernel/sys_sparc32.c 2003-01-15 14:54:34.000000000 +1100
@@ -1681,7 +1681,7 @@
extern asmlinkage int sys_sigprocmask(int how, old_sigset_t *set, old_sigset_t *oset);
-asmlinkage int sys32_sigprocmask(int how, old_sigset_t32 *set, old_sigset_t32 *oset)
+asmlinkage int sys32_sigprocmask(int how, compat_old_sigset_t *set, compat_old_sigset_t *oset)
{
old_sigset_t s;
int ret;
@@ -1698,15 +1698,15 @@
extern asmlinkage int sys_rt_sigprocmask(int how, sigset_t *set, sigset_t *oset, size_t sigsetsize);
-asmlinkage int sys32_rt_sigprocmask(int how, sigset_t32 *set, sigset_t32 *oset, compat_size_t sigsetsize)
+asmlinkage int sys32_rt_sigprocmask(int how, compat_sigset_t *set, compat_sigset_t *oset, compat_size_t sigsetsize)
{
sigset_t s;
- sigset_t32 s32;
+ compat_sigset_t s32;
int ret;
mm_segment_t old_fs = get_fs();
if (set) {
- if (copy_from_user (&s32, set, sizeof(sigset_t32)))
+ if (copy_from_user (&s32, set, sizeof(compat_sigset_t)))
return -EFAULT;
switch (_NSIG_WORDS) {
case 4: s.sig[3] = s32.sig[6] | (((long)s32.sig[7]) << 32);
@@ -1726,7 +1726,7 @@
case 2: s32.sig[3] = (s.sig[1] >> 32); s32.sig[2] = s.sig[1];
case 1: s32.sig[1] = (s.sig[0] >> 32); s32.sig[0] = s.sig[0];
}
- if (copy_to_user (oset, &s32, sizeof(sigset_t32)))
+ if (copy_to_user (oset, &s32, sizeof(compat_sigset_t)))
return -EFAULT;
}
return 0;
@@ -1734,7 +1734,7 @@
extern asmlinkage int sys_sigpending(old_sigset_t *set);
-asmlinkage int sys32_sigpending(old_sigset_t32 *set)
+asmlinkage int sys32_sigpending(compat_old_sigset_t *set)
{
old_sigset_t s;
int ret;
@@ -1749,10 +1749,10 @@
extern asmlinkage int sys_rt_sigpending(sigset_t *set, size_t sigsetsize);
-asmlinkage int sys32_rt_sigpending(sigset_t32 *set, compat_size_t sigsetsize)
+asmlinkage int sys32_rt_sigpending(compat_sigset_t *set, compat_size_t sigsetsize)
{
sigset_t s;
- sigset_t32 s32;
+ compat_sigset_t s32;
int ret;
mm_segment_t old_fs = get_fs();
@@ -1766,19 +1766,19 @@
case 2: s32.sig[3] = (s.sig[1] >> 32); s32.sig[2] = s.sig[1];
case 1: s32.sig[1] = (s.sig[0] >> 32); s32.sig[0] = s.sig[0];
}
- if (copy_to_user (set, &s32, sizeof(sigset_t32)))
+ if (copy_to_user (set, &s32, sizeof(compat_sigset_t)))
return -EFAULT;
}
return ret;
}
asmlinkage int
-sys32_rt_sigtimedwait(sigset_t32 *uthese, siginfo_t32 *uinfo,
+sys32_rt_sigtimedwait(compat_sigset_t *uthese, siginfo_t32 *uinfo,
struct compat_timespec *uts, compat_size_t sigsetsize)
{
int ret, sig;
sigset_t these;
- sigset_t32 these32;
+ compat_sigset_t these32;
struct timespec ts;
siginfo_t info;
long timeout = 0;
@@ -1787,7 +1787,7 @@
if (sigsetsize != sizeof(sigset_t))
return -EINVAL;
- if (copy_from_user (&these32, uthese, sizeof(sigset_t32)))
+ if (copy_from_user (&these32, uthese, sizeof(compat_sigset_t)))
return -EFAULT;
switch (_NSIG_WORDS) {
@@ -2701,7 +2701,7 @@
}
if (act) {
- old_sigset_t32 mask;
+ compat_old_sigset_t mask;
ret = get_user((long)new_ka.sa.sa_handler, &act->sa_handler);
ret |= __get_user((long)new_ka.sa.sa_restorer, &act->sa_restorer);
@@ -2731,10 +2731,10 @@
{
struct k_sigaction new_ka, old_ka;
int ret;
- sigset_t32 set32;
+ compat_sigset_t set32;
/* XXX: Don't preclude handling different sized sigset_t's. */
- if (sigsetsize != sizeof(sigset_t32))
+ if (sigsetsize != sizeof(compat_sigset_t))
return -EINVAL;
/* All tasks which use RT signals (effectively) use
@@ -2745,7 +2745,7 @@
if (act) {
new_ka.ka_restorer = restorer;
ret = get_user((long)new_ka.sa.sa_handler, &act->sa_handler);
- ret |= __copy_from_user(&set32, &act->sa_mask, sizeof(sigset_t32));
+ ret |= __copy_from_user(&set32, &act->sa_mask, sizeof(compat_sigset_t));
switch (_NSIG_WORDS) {
case 4: new_ka.sa.sa_mask.sig[3] = set32.sig[6] | (((long)set32.sig[7]) << 32);
case 3: new_ka.sa.sa_mask.sig[2] = set32.sig[4] | (((long)set32.sig[5]) << 32);
@@ -2768,7 +2768,7 @@
case 1: set32.sig[1] = (old_ka.sa.sa_mask.sig[0] >> 32); set32.sig[0] = old_ka.sa.sa_mask.sig[0];
}
ret = put_user((long)old_ka.sa.sa_handler, &oact->sa_handler);
- ret |= __copy_to_user(&oact->sa_mask, &set32, sizeof(sigset_t32));
+ ret |= __copy_to_user(&oact->sa_mask, &set32, sizeof(compat_sigset_t));
ret |= __put_user(old_ka.sa.sa_flags, &oact->sa_flags);
ret |= __put_user((long)old_ka.sa.sa_restorer, &oact->sa_restorer);
if (ret)
diff -ruN 2.5.58-32bit.4/arch/sparc64/kernel/sys_sunos32.c 2.5.58-32bit.5/arch/sparc64/kernel/sys_sunos32.c
--- 2.5.58-32bit.4/arch/sparc64/kernel/sys_sunos32.c 2003-01-09 16:23:55.000000000 +1100
+++ 2.5.58-32bit.5/arch/sparc64/kernel/sys_sunos32.c 2003-01-15 14:51:58.000000000 +1100
@@ -1297,7 +1297,7 @@
int ret;
if (act) {
- old_sigset_t32 mask;
+ compat_old_sigset_t mask;
if (get_user((long)new_ka.sa.sa_handler, &((struct old_sigaction32 *)A(act))->sa_handler) ||
__get_user(new_ka.sa.sa_flags, &((struct old_sigaction32 *)A(act))->sa_flags))
diff -ruN 2.5.58-32bit.4/include/asm-sparc64/compat.h 2.5.58-32bit.5/include/asm-sparc64/compat.h
--- 2.5.58-32bit.4/include/asm-sparc64/compat.h 2003-01-14 09:57:58.000000000 +1100
+++ 2.5.58-32bit.5/include/asm-sparc64/compat.h 2003-01-15 16:38:13.000000000 +1100
@@ -77,4 +77,11 @@
int f_spare[6];
};
+typedef u32 compat_old_sigset_t;
+
+#define _COMPAT_NSIG 64
+#define _COMPAT_NSIG_BPW 32
+
+typedef u32 compat_sigset_word;
+
#endif /* _ASM_SPARC64_COMPAT_H */
diff -ruN 2.5.58-32bit.4/include/asm-sparc64/signal.h 2.5.58-32bit.5/include/asm-sparc64/signal.h
--- 2.5.58-32bit.4/include/asm-sparc64/signal.h 2002-12-10 15:10:40.000000000 +1100
+++ 2.5.58-32bit.5/include/asm-sparc64/signal.h 2003-01-15 15:03:43.000000000 +1100
@@ -88,27 +88,21 @@
#define _NSIG_BPW 64
#define _NSIG_WORDS (__NEW_NSIG / _NSIG_BPW)
-#define _NSIG_BPW32 32
-#define _NSIG_WORDS32 (__NEW_NSIG / _NSIG_BPW32)
-
#define SIGRTMIN 32
#define SIGRTMAX (__NEW_NSIG - 1)
#if defined(__KERNEL__) || defined(__WANT_POSIX1B_SIGNALS__)
#define _NSIG __NEW_NSIG
#define __new_sigset_t sigset_t
-#define __new_sigset_t32 sigset_t32
#define __new_sigaction sigaction
#define __new_sigaction32 sigaction32
#define __old_sigset_t old_sigset_t
-#define __old_sigset_t32 old_sigset_t32
#define __old_sigaction old_sigaction
#define __old_sigaction32 old_sigaction32
#else
#define _NSIG __OLD_NSIG
#define NSIG _NSIG
#define __old_sigset_t sigset_t
-#define __old_sigset_t32 sigset_t32
#define __old_sigaction sigaction
#define __old_sigaction32 sigaction32
#endif
@@ -116,16 +110,11 @@
#ifndef __ASSEMBLY__
typedef unsigned long __old_sigset_t; /* at least 32 bits */
-typedef unsigned int __old_sigset_t32;
typedef struct {
unsigned long sig[_NSIG_WORDS];
} __new_sigset_t;
-typedef struct {
- unsigned int sig[_NSIG_WORDS32];
-} __new_sigset_t32;
-
/* A SunOS sigstack */
struct sigstack {
/* XXX 32-bit pointers pinhead XXX */
@@ -213,14 +202,14 @@
__new_sigset_t sa_mask;
};
+#ifdef __KERNEL__
struct __new_sigaction32 {
unsigned sa_handler;
unsigned int sa_flags;
unsigned sa_restorer; /* not used by Linux/SPARC yet */
- __new_sigset_t32 sa_mask;
+ compat_sigset_t sa_mask;
};
-#ifdef __KERNEL__
struct k_sigaction {
struct __new_sigaction sa;
void *ka_restorer;
@@ -234,12 +223,14 @@
void (*sa_restorer)(void); /* not used by Linux/SPARC yet */
};
+#ifdef __KERNEL__
struct __old_sigaction32 {
unsigned sa_handler;
- __old_sigset_t32 sa_mask;
+ compat_old_sigset_t sa_mask;
unsigned int sa_flags;
unsigned sa_restorer; /* not used by Linux/SPARC yet */
};
+#endif
typedef struct sigaltstack {
void *ss_sp;
^ permalink raw reply [flat|nested] 8+ messages in thread
* PATCH][COMPAT] compat_{old_}sigset_t x86_64 part
2003-01-15 6:34 [PATCH][COMPAT] compat_{old_}sigset_t generic part Stephen Rothwell
2003-01-15 6:36 ` [PATCH][COMPAT] compat_{old_}sigset_t ppc64 Stephen Rothwell
2003-01-15 6:39 ` [PATCH][COMPAT] compat_{old_}sigset_t sparc64 Stephen Rothwell
@ 2003-01-15 6:40 ` Stephen Rothwell
2003-01-15 6:42 ` [PATCH][COMPAT] compat_{old_}sigset_t ia64 part Stephen Rothwell
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Stephen Rothwell @ 2003-01-15 6:40 UTC (permalink / raw)
To: ak; +Cc: torvalds, linux-kernel
Hi Andi,
Here is the x86_64 part of the patch.
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
diff -ruN 2.5.58-32bit.4/arch/x86_64/ia32/ia32_signal.c 2.5.58-32bit.5/arch/x86_64/ia32/ia32_signal.c
--- 2.5.58-32bit.4/arch/x86_64/ia32/ia32_signal.c 2002-12-27 15:15:41.000000000 +1100
+++ 2.5.58-32bit.5/arch/x86_64/ia32/ia32_signal.c 2003-01-15 16:04:07.000000000 +1100
@@ -22,6 +22,7 @@
#include <linux/unistd.h>
#include <linux/stddef.h>
#include <linux/personality.h>
+#include <linux/compat.h>
#include <asm/ucontext.h>
#include <asm/uaccess.h>
#include <asm/i387.h>
@@ -133,7 +134,7 @@
int sig;
struct sigcontext_ia32 sc;
struct _fpstate_ia32 fpstate;
- unsigned int extramask[_IA32_NSIG_WORDS-1];
+ unsigned int extramask[_COMPAT_NSIG_WORDS-1];
char retcode[8];
};
@@ -236,7 +237,7 @@
if (verify_area(VERIFY_READ, frame, sizeof(*frame)))
goto badframe;
if (__get_user(set.sig[0], &frame->sc.oldmask)
- || (_IA32_NSIG_WORDS > 1
+ || (_COMPAT_NSIG_WORDS > 1
&& __copy_from_user((((char *) &set.sig) + 4), &frame->extramask,
sizeof(frame->extramask))))
goto badframe;
@@ -372,7 +373,7 @@
}
void ia32_setup_frame(int sig, struct k_sigaction *ka,
- sigset32_t *set, struct pt_regs * regs)
+ compat_sigset_t *set, struct pt_regs * regs)
{
struct sigframe *frame;
int err = 0;
@@ -398,7 +399,7 @@
if (err)
goto give_sigsegv;
- if (_IA32_NSIG_WORDS > 1) {
+ if (_COMPAT_NSIG_WORDS > 1) {
err |= __copy_to_user(frame->extramask, &set->sig[1],
sizeof(frame->extramask));
}
@@ -447,7 +448,7 @@
}
void ia32_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
- sigset32_t *set, struct pt_regs * regs)
+ compat_sigset_t *set, struct pt_regs * regs)
{
struct rt_sigframe *frame;
int err = 0;
diff -ruN 2.5.58-32bit.4/arch/x86_64/ia32/sys_ia32.c 2.5.58-32bit.5/arch/x86_64/ia32/sys_ia32.c
--- 2.5.58-32bit.4/arch/x86_64/ia32/sys_ia32.c 2003-01-13 11:07:06.000000000 +1100
+++ 2.5.58-32bit.5/arch/x86_64/ia32/sys_ia32.c 2003-01-15 16:04:33.000000000 +1100
@@ -276,10 +276,10 @@
{
struct k_sigaction new_ka, old_ka;
int ret;
- sigset32_t set32;
+ compat_sigset_t set32;
/* XXX: Don't preclude handling different sized sigset_t's. */
- if (sigsetsize != sizeof(sigset32_t))
+ if (sigsetsize != sizeof(compat_sigset_t))
return -EINVAL;
if (act) {
@@ -287,10 +287,10 @@
__get_user((long)new_ka.sa.sa_handler, &act->sa_handler) ||
__get_user(new_ka.sa.sa_flags, &act->sa_flags) ||
__get_user((long)new_ka.sa.sa_restorer, &act->sa_restorer)||
- __copy_from_user(&set32, &act->sa_mask, sizeof(sigset32_t)))
+ __copy_from_user(&set32, &act->sa_mask, sizeof(compat_sigset_t)))
return -EFAULT;
- /* FIXME: here we rely on _IA32_NSIG_WORS to be >= than _NSIG_WORDS << 1 */
+ /* FIXME: here we rely on _COMPAT_NSIG_WORS to be >= than _NSIG_WORDS << 1 */
switch (_NSIG_WORDS) {
case 4: new_ka.sa.sa_mask.sig[3] = set32.sig[6]
| (((long)set32.sig[7]) << 32);
@@ -306,7 +306,7 @@
ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
if (!ret && oact) {
- /* FIXME: here we rely on _IA32_NSIG_WORS to be >= than _NSIG_WORDS << 1 */
+ /* FIXME: here we rely on _COMPAT_NSIG_WORS to be >= than _NSIG_WORDS << 1 */
switch (_NSIG_WORDS) {
case 4:
set32.sig[7] = (old_ka.sa.sa_mask.sig[3] >> 32);
@@ -325,7 +325,7 @@
__put_user((long)old_ka.sa.sa_handler, &oact->sa_handler) ||
__put_user((long)old_ka.sa.sa_restorer, &oact->sa_restorer) ||
__put_user(old_ka.sa.sa_flags, &oact->sa_flags) ||
- __copy_to_user(&oact->sa_mask, &set32, sizeof(sigset32_t)))
+ __copy_to_user(&oact->sa_mask, &set32, sizeof(compat_sigset_t)))
return -EFAULT;
}
@@ -339,7 +339,7 @@
int ret;
if (act) {
- old_sigset32_t mask;
+ compat_old_sigset_t mask;
if (verify_area(VERIFY_READ, act, sizeof(*act)) ||
__get_user((long)new_ka.sa.sa_handler, &act->sa_handler) ||
@@ -368,16 +368,16 @@
size_t sigsetsize);
asmlinkage long
-sys32_rt_sigprocmask(int how, sigset32_t *set, sigset32_t *oset,
+sys32_rt_sigprocmask(int how, compat_sigset_t *set, compat_sigset_t *oset,
unsigned int sigsetsize)
{
sigset_t s;
- sigset32_t s32;
+ compat_sigset_t s32;
int ret;
mm_segment_t old_fs = get_fs();
if (set) {
- if (copy_from_user (&s32, set, sizeof(sigset32_t)))
+ if (copy_from_user (&s32, set, sizeof(compat_sigset_t)))
return -EFAULT;
switch (_NSIG_WORDS) {
case 4: s.sig[3] = s32.sig[6] | (((long)s32.sig[7]) << 32);
@@ -398,7 +398,7 @@
case 2: s32.sig[3] = (s.sig[1] >> 32); s32.sig[2] = s.sig[1];
case 1: s32.sig[1] = (s.sig[0] >> 32); s32.sig[0] = s.sig[0];
}
- if (copy_to_user (oset, &s32, sizeof(sigset32_t)))
+ if (copy_to_user (oset, &s32, sizeof(compat_sigset_t)))
return -EFAULT;
}
return 0;
@@ -1228,7 +1228,7 @@
old_sigset_t *oset);
asmlinkage long
-sys32_sigprocmask(int how, old_sigset32_t *set, old_sigset32_t *oset)
+sys32_sigprocmask(int how, compat_old_sigset_t *set, compat_old_sigset_t *oset)
{
old_sigset_t s;
int ret;
@@ -1246,7 +1246,7 @@
extern asmlinkage long sys_sigpending(old_sigset_t *set);
asmlinkage long
-sys32_sigpending(old_sigset32_t *set)
+sys32_sigpending(compat_old_sigset_t *set)
{
old_sigset_t s;
int ret;
@@ -1262,10 +1262,10 @@
extern asmlinkage long sys_rt_sigpending(sigset_t *set, size_t sigsetsize);
asmlinkage long
-sys32_rt_sigpending(sigset32_t *set, compat_size_t sigsetsize)
+sys32_rt_sigpending(compat_sigset_t *set, compat_size_t sigsetsize)
{
sigset_t s;
- sigset32_t s32;
+ compat_sigset_t s32;
int ret;
mm_segment_t old_fs = get_fs();
@@ -1279,7 +1279,7 @@
case 2: s32.sig[3] = (s.sig[1] >> 32); s32.sig[2] = s.sig[1];
case 1: s32.sig[1] = (s.sig[0] >> 32); s32.sig[0] = s.sig[0];
}
- if (copy_to_user (set, &s32, sizeof(sigset32_t)))
+ if (copy_to_user (set, &s32, sizeof(compat_sigset_t)))
return -EFAULT;
}
return ret;
@@ -1367,18 +1367,18 @@
const struct timespec *uts, size_t sigsetsize);
asmlinkage long
-sys32_rt_sigtimedwait(sigset32_t *uthese, siginfo_t32 *uinfo,
+sys32_rt_sigtimedwait(compat_sigset_t *uthese, siginfo_t32 *uinfo,
struct compat_timespec *uts, compat_size_t sigsetsize)
{
sigset_t s;
- sigset32_t s32;
+ compat_sigset_t s32;
struct timespec t;
int ret;
mm_segment_t old_fs = get_fs();
siginfo_t info;
siginfo_t32 info32;
- if (copy_from_user (&s32, uthese, sizeof(sigset32_t)))
+ if (copy_from_user (&s32, uthese, sizeof(compat_sigset_t)))
return -EFAULT;
switch (_NSIG_WORDS) {
case 4: s.sig[3] = s32.sig[6] | (((long)s32.sig[7]) << 32);
diff -ruN 2.5.58-32bit.4/include/asm-x86_64/compat.h 2.5.58-32bit.5/include/asm-x86_64/compat.h
--- 2.5.58-32bit.4/include/asm-x86_64/compat.h 2003-01-13 11:07:06.000000000 +1100
+++ 2.5.58-32bit.5/include/asm-x86_64/compat.h 2003-01-15 16:38:52.000000000 +1100
@@ -81,4 +81,11 @@
int f_spare[6];
};
+typedef u32 compat_old_sigset_t; /* at least 32 bits */
+
+#define _COMPAT_NSIG 64
+#define _COMPAT_NSIG_BPW 32
+
+typedef u32 compat_sigset_word;
+
#endif /* _ASM_X86_64_COMPAT_H */
diff -ruN 2.5.58-32bit.4/include/asm-x86_64/ia32.h 2.5.58-32bit.5/include/asm-x86_64/ia32.h
--- 2.5.58-32bit.4/include/asm-x86_64/ia32.h 2003-01-13 11:07:06.000000000 +1100
+++ 2.5.58-32bit.5/include/asm-x86_64/ia32.h 2003-01-15 15:08:02.000000000 +1100
@@ -26,28 +26,18 @@
#include <asm/sigcontext32.h>
/* signal.h */
-#define _IA32_NSIG 64
-#define _IA32_NSIG_BPW 32
-#define _IA32_NSIG_WORDS (_IA32_NSIG / _IA32_NSIG_BPW)
-
-typedef struct {
- unsigned int sig[_IA32_NSIG_WORDS];
-} sigset32_t;
-
struct sigaction32 {
unsigned int sa_handler; /* Really a pointer, but need to deal
with 32 bits */
unsigned int sa_flags;
unsigned int sa_restorer; /* Another 32 bit pointer */
- sigset32_t sa_mask; /* A 32 bit mask */
+ compat_sigset_t sa_mask; /* A 32 bit mask */
};
-typedef unsigned int old_sigset32_t; /* at least 32 bits */
-
struct old_sigaction32 {
unsigned int sa_handler; /* Really a pointer, but need to deal
with 32 bits */
- old_sigset32_t sa_mask; /* A 32 bit mask */
+ compat_old_sigset_t sa_mask; /* A 32 bit mask */
unsigned int sa_flags;
unsigned int sa_restorer; /* Another 32 bit pointer */
};
@@ -63,7 +53,7 @@
unsigned int uc_link;
stack_ia32_t uc_stack;
struct sigcontext_ia32 uc_mcontext;
- sigset32_t uc_sigmask; /* mask last for extensibility */
+ compat_sigset_t uc_sigmask; /* mask last for extensibility */
};
/* This matches struct stat64 in glibc2.2, hence the absolutely
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH][COMPAT] compat_{old_}sigset_t ia64 part
2003-01-15 6:34 [PATCH][COMPAT] compat_{old_}sigset_t generic part Stephen Rothwell
` (2 preceding siblings ...)
2003-01-15 6:40 ` PATCH][COMPAT] compat_{old_}sigset_t x86_64 part Stephen Rothwell
@ 2003-01-15 6:42 ` Stephen Rothwell
2003-01-15 6:44 ` [PATCH][COMPAT] compat_{old_}sigset_t s390x part Stephen Rothwell
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Stephen Rothwell @ 2003-01-15 6:42 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.4/arch/ia64/ia32/ia32_signal.c 2.5.58-32bit.5/arch/ia64/ia32/ia32_signal.c
--- 2.5.58-32bit.4/arch/ia64/ia32/ia32_signal.c 2003-01-13 11:03:51.000000000 +1100
+++ 2.5.58-32bit.5/arch/ia64/ia32/ia32_signal.c 2003-01-15 16:03:42.000000000 +1100
@@ -56,7 +56,7 @@
int sig;
struct sigcontext_ia32 sc;
struct _fpstate_ia32 fpstate;
- unsigned int extramask[_IA32_NSIG_WORDS-1];
+ unsigned int extramask[_COMPAT_NSIG_WORDS-1];
char retcode[8];
};
@@ -463,7 +463,7 @@
}
asmlinkage long
-ia32_rt_sigsuspend (sigset32_t *uset, unsigned int sigsetsize, struct sigscratch *scr)
+ia32_rt_sigsuspend (compat_sigset_t *uset, unsigned int sigsetsize, struct sigscratch *scr)
{
extern long ia64_do_signal (sigset_t *oldset, struct sigscratch *scr, long in_syscall);
sigset_t oldset, set;
@@ -504,7 +504,7 @@
asmlinkage long
ia32_sigsuspend (unsigned int mask, struct sigscratch *scr)
{
- return ia32_rt_sigsuspend((sigset32_t *)&mask, sizeof(mask), scr);
+ return ia32_rt_sigsuspend((compat_sigset_t *)&mask, sizeof(mask), scr);
}
asmlinkage long
@@ -530,14 +530,14 @@
int ret;
/* XXX: Don't preclude handling different sized sigset_t's. */
- if (sigsetsize != sizeof(sigset32_t))
+ if (sigsetsize != sizeof(compat_sigset_t))
return -EINVAL;
if (act) {
ret = get_user(handler, &act->sa_handler);
ret |= get_user(new_ka.sa.sa_flags, &act->sa_flags);
ret |= get_user(restorer, &act->sa_restorer);
- ret |= copy_from_user(&new_ka.sa.sa_mask, &act->sa_mask, sizeof(sigset32_t));
+ ret |= copy_from_user(&new_ka.sa.sa_mask, &act->sa_mask, sizeof(compat_sigset_t));
if (ret)
return -EFAULT;
@@ -550,7 +550,7 @@
ret = put_user(IA32_SA_HANDLER(&old_ka), &oact->sa_handler);
ret |= put_user(old_ka.sa.sa_flags, &oact->sa_flags);
ret |= put_user(IA32_SA_RESTORER(&old_ka), &oact->sa_restorer);
- ret |= copy_to_user(&oact->sa_mask, &old_ka.sa.sa_mask, sizeof(sigset32_t));
+ ret |= copy_to_user(&oact->sa_mask, &old_ka.sa.sa_mask, sizeof(compat_sigset_t));
}
return ret;
}
@@ -560,7 +560,7 @@
size_t sigsetsize);
asmlinkage long
-sys32_rt_sigprocmask (int how, sigset32_t *set, sigset32_t *oset, unsigned int sigsetsize)
+sys32_rt_sigprocmask (int how, compat_sigset_t *set, compat_sigset_t *oset, unsigned int sigsetsize)
{
mm_segment_t old_fs = get_fs();
sigset_t s;
@@ -589,11 +589,11 @@
asmlinkage long
sys32_sigprocmask (int how, unsigned int *set, unsigned int *oset)
{
- return sys32_rt_sigprocmask(how, (sigset32_t *) set, (sigset32_t *) oset, sizeof(*set));
+ return sys32_rt_sigprocmask(how, (compat_sigset_t *) set, (compat_sigset_t *) oset, sizeof(*set));
}
asmlinkage long
-sys32_rt_sigtimedwait (sigset32_t *uthese, siginfo_t32 *uinfo,
+sys32_rt_sigtimedwait (compat_sigset_t *uthese, siginfo_t32 *uinfo,
struct compat_timespec *uts, unsigned int sigsetsize)
{
extern asmlinkage long sys_rt_sigtimedwait (const sigset_t *, siginfo_t *,
@@ -605,7 +605,7 @@
sigset_t s;
int ret;
- if (copy_from_user(&s.sig, uthese, sizeof(sigset32_t)))
+ if (copy_from_user(&s.sig, uthese, sizeof(compat_sigset_t)))
return -EFAULT;
if (uts && get_compat_timespec(&t, uts))
return -EFAULT;
@@ -645,7 +645,7 @@
int ret;
if (act) {
- old_sigset32_t mask;
+ compat_old_sigset_t mask;
ret = get_user(handler, &act->sa_handler);
ret |= get_user(new_ka.sa.sa_flags, &act->sa_flags);
@@ -863,7 +863,7 @@
err |= setup_sigcontext_ia32(&frame->sc, &frame->fpstate, regs, set->sig[0]);
- if (_IA32_NSIG_WORDS > 1)
+ if (_COMPAT_NSIG_WORDS > 1)
err |= __copy_to_user(frame->extramask, (char *) &set->sig + 4,
sizeof(frame->extramask));
@@ -1008,7 +1008,7 @@
goto badframe;
if (__get_user(set.sig[0], &frame->sc.oldmask)
- || (_IA32_NSIG_WORDS > 1 && __copy_from_user((char *) &set.sig + 4, &frame->extramask,
+ || (_COMPAT_NSIG_WORDS > 1 && __copy_from_user((char *) &set.sig + 4, &frame->extramask,
sizeof(frame->extramask))))
goto badframe;
diff -ruN 2.5.58-32bit.4/include/asm-ia64/compat.h 2.5.58-32bit.5/include/asm-ia64/compat.h
--- 2.5.58-32bit.4/include/asm-ia64/compat.h 2003-01-13 11:07:06.000000000 +1100
+++ 2.5.58-32bit.5/include/asm-ia64/compat.h 2003-01-15 16:34:22.000000000 +1100
@@ -81,4 +81,11 @@
int f_spare[6];
};
+typedef u32 compat_old_sigset_t; /* at least 32 bits */
+
+#define _COMPAT_NSIG 64
+#define _COMPAT_NSIG_BPW 32
+
+typedef u32 compat_sigset_word;
+
#endif /* _ASM_IA64_COMPAT_H */
diff -ruN 2.5.58-32bit.4/include/asm-ia64/ia32.h 2.5.58-32bit.5/include/asm-ia64/ia32.h
--- 2.5.58-32bit.4/include/asm-ia64/ia32.h 2003-01-13 11:07:06.000000000 +1100
+++ 2.5.58-32bit.5/include/asm-ia64/ia32.h 2003-01-15 14:57:33.000000000 +1100
@@ -132,10 +132,6 @@
};
/* signal.h */
-#define _IA32_NSIG 64
-#define _IA32_NSIG_BPW 32
-#define _IA32_NSIG_WORDS (_IA32_NSIG / _IA32_NSIG_BPW)
-
#define IA32_SET_SA_HANDLER(ka,handler,restorer) \
((ka)->sa.sa_handler = (__sighandler_t) \
(((unsigned long)(restorer) << 32) \
@@ -143,23 +139,17 @@
#define IA32_SA_HANDLER(ka) ((unsigned long) (ka)->sa.sa_handler & 0xffffffff)
#define IA32_SA_RESTORER(ka) ((unsigned long) (ka)->sa.sa_handler >> 32)
-typedef struct {
- unsigned int sig[_IA32_NSIG_WORDS];
-} sigset32_t;
-
struct sigaction32 {
unsigned int sa_handler; /* Really a pointer, but need to deal with 32 bits */
unsigned int sa_flags;
unsigned int sa_restorer; /* Another 32 bit pointer */
- sigset32_t sa_mask; /* A 32 bit mask */
+ compat_sigset_t sa_mask; /* A 32 bit mask */
};
-typedef unsigned int old_sigset32_t; /* at least 32 bits */
-
struct old_sigaction32 {
unsigned int sa_handler; /* Really a pointer, but need to deal
with 32 bits */
- old_sigset32_t sa_mask; /* A 32 bit mask */
+ compat_old_sigset_t sa_mask; /* A 32 bit mask */
unsigned int sa_flags;
unsigned int sa_restorer; /* Another 32 bit pointer */
};
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH][COMPAT] compat_{old_}sigset_t s390x part
2003-01-15 6:34 [PATCH][COMPAT] compat_{old_}sigset_t generic part Stephen Rothwell
` (3 preceding siblings ...)
2003-01-15 6:42 ` [PATCH][COMPAT] compat_{old_}sigset_t ia64 part Stephen Rothwell
@ 2003-01-15 6:44 ` Stephen Rothwell
2003-01-15 6:46 ` [PATCH][COMPAT] compat_{old_}sigset_t mips64 part Stephen Rothwell
2003-01-15 6:47 ` [PATCH][COMPAT] compat_{old_}sigset_t parisc part Stephen Rothwell
6 siblings, 0 replies; 8+ messages in thread
From: Stephen Rothwell @ 2003-01-15 6:44 UTC (permalink / raw)
To: torvalds; +Cc: linux-kernel, schwidefsky
Hi Linus,
With Martin's continuing approval, here is the s390x part of the patch.
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
diff -ruN 2.5.58-32bit.4/arch/s390x/kernel/linux32.c 2.5.58-32bit.5/arch/s390x/kernel/linux32.c
--- 2.5.58-32bit.4/arch/s390x/kernel/linux32.c 2003-01-14 09:57:51.000000000 +1100
+++ 2.5.58-32bit.5/arch/s390x/kernel/linux32.c 2003-01-15 14:51:38.000000000 +1100
@@ -1623,7 +1623,7 @@
extern asmlinkage int sys_sigprocmask(int how, old_sigset_t *set, old_sigset_t *oset);
-asmlinkage int sys32_sigprocmask(int how, old_sigset_t32 *set, old_sigset_t32 *oset)
+asmlinkage int sys32_sigprocmask(int how, compat_old_sigset_t *set, compat_old_sigset_t *oset)
{
old_sigset_t s;
int ret;
@@ -1640,15 +1640,15 @@
extern asmlinkage int sys_rt_sigprocmask(int how, sigset_t *set, sigset_t *oset, size_t sigsetsize);
-asmlinkage int sys32_rt_sigprocmask(int how, sigset_t32 *set, sigset_t32 *oset, compat_size_t sigsetsize)
+asmlinkage int sys32_rt_sigprocmask(int how, compat_sigset_t *set, compat_sigset_t *oset, compat_size_t sigsetsize)
{
sigset_t s;
- sigset_t32 s32;
+ compat_sigset_t s32;
int ret;
mm_segment_t old_fs = get_fs();
if (set) {
- if (copy_from_user (&s32, set, sizeof(sigset_t32)))
+ if (copy_from_user (&s32, set, sizeof(compat_sigset_t)))
return -EFAULT;
switch (_NSIG_WORDS) {
case 4: s.sig[3] = s32.sig[6] | (((long)s32.sig[7]) << 32);
@@ -1668,7 +1668,7 @@
case 2: s32.sig[3] = (s.sig[1] >> 32); s32.sig[2] = s.sig[1];
case 1: s32.sig[1] = (s.sig[0] >> 32); s32.sig[0] = s.sig[0];
}
- if (copy_to_user (oset, &s32, sizeof(sigset_t32)))
+ if (copy_to_user (oset, &s32, sizeof(compat_sigset_t)))
return -EFAULT;
}
return 0;
@@ -1676,7 +1676,7 @@
extern asmlinkage int sys_sigpending(old_sigset_t *set);
-asmlinkage int sys32_sigpending(old_sigset_t32 *set)
+asmlinkage int sys32_sigpending(compat_old_sigset_t *set)
{
old_sigset_t s;
int ret;
@@ -1691,10 +1691,10 @@
extern asmlinkage int sys_rt_sigpending(sigset_t *set, size_t sigsetsize);
-asmlinkage int sys32_rt_sigpending(sigset_t32 *set, compat_size_t sigsetsize)
+asmlinkage int sys32_rt_sigpending(compat_sigset_t *set, compat_size_t sigsetsize)
{
sigset_t s;
- sigset_t32 s32;
+ compat_sigset_t s32;
int ret;
mm_segment_t old_fs = get_fs();
@@ -1708,7 +1708,7 @@
case 2: s32.sig[3] = (s.sig[1] >> 32); s32.sig[2] = s.sig[1];
case 1: s32.sig[1] = (s.sig[0] >> 32); s32.sig[0] = s.sig[0];
}
- if (copy_to_user (set, &s32, sizeof(sigset_t32)))
+ if (copy_to_user (set, &s32, sizeof(compat_sigset_t)))
return -EFAULT;
}
return ret;
@@ -1718,12 +1718,12 @@
copy_siginfo_to_user32(siginfo_t32 *to, siginfo_t *from);
asmlinkage int
-sys32_rt_sigtimedwait(sigset_t32 *uthese, siginfo_t32 *uinfo,
+sys32_rt_sigtimedwait(compat_sigset_t *uthese, siginfo_t32 *uinfo,
struct compat_timespec *uts, compat_size_t sigsetsize)
{
int ret, sig;
sigset_t these;
- sigset_t32 these32;
+ compat_sigset_t these32;
struct timespec ts;
siginfo_t info;
long timeout = 0;
@@ -1732,7 +1732,7 @@
if (sigsetsize != sizeof(sigset_t))
return -EINVAL;
- if (copy_from_user (&these32, uthese, sizeof(sigset_t32)))
+ if (copy_from_user (&these32, uthese, sizeof(compat_sigset_t)))
return -EFAULT;
switch (_NSIG_WORDS) {
diff -ruN 2.5.58-32bit.4/arch/s390x/kernel/linux32.h 2.5.58-32bit.5/arch/s390x/kernel/linux32.h
--- 2.5.58-32bit.4/arch/s390x/kernel/linux32.h 2003-01-14 09:57:51.000000000 +1100
+++ 2.5.58-32bit.5/arch/s390x/kernel/linux32.h 2003-01-15 16:23:14.000000000 +1100
@@ -25,20 +25,13 @@
#define F_SETLK64 13
#define F_SETLKW64 14
-typedef __u32 old_sigset_t32; /* at least 32 bits */
-
struct old_sigaction32 {
__u32 sa_handler; /* Really a pointer, but need to deal with 32 bits */
- old_sigset_t32 sa_mask; /* A 32 bit mask */
+ compat_old_sigset_t sa_mask; /* A 32 bit mask */
__u32 sa_flags;
__u32 sa_restorer; /* Another 32 bit pointer */
};
-#define _SIGCONTEXT_NSIG_WORDS32 2
-typedef struct {
- __u32 sig[_SIGCONTEXT_NSIG_WORDS32];
-} sigset_t32;
-
typedef union sigval32 {
int sival_int;
__u32 sival_ptr;
@@ -174,7 +167,7 @@
struct sigcontext32
{
- __u32 oldmask[_SIGCONTEXT_NSIG_WORDS32];
+ __u32 oldmask[_COMPAT_NSIG_WORDS];
__u32 sregs; /* pointer */
};
@@ -183,7 +176,7 @@
__u32 sa_handler; /* pointer */
__u32 sa_flags;
__u32 sa_restorer; /* pointer */
- sigset_t32 sa_mask; /* mask last for extensibility */
+ compat_sigset_t sa_mask; /* mask last for extensibility */
};
typedef struct {
@@ -198,7 +191,7 @@
__u32 uc_link; /* pointer */
stack_t32 uc_stack;
_sigregs32 uc_mcontext;
- sigset_t32 uc_sigmask; /* mask last for extensibility */
+ compat_sigset_t uc_sigmask; /* mask last for extensibility */
};
#endif /* _ASM_S390X_S390_H */
diff -ruN 2.5.58-32bit.4/arch/s390x/kernel/signal32.c 2.5.58-32bit.5/arch/s390x/kernel/signal32.c
--- 2.5.58-32bit.4/arch/s390x/kernel/signal32.c 2002-10-08 12:02:40.000000000 +1000
+++ 2.5.58-32bit.5/arch/s390x/kernel/signal32.c 2003-01-15 14:51:50.000000000 +1100
@@ -12,6 +12,7 @@
*/
#include <linux/config.h>
+#include <linux/compat.h>
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/smp.h>
@@ -127,10 +128,10 @@
}
asmlinkage int
-sys32_rt_sigsuspend(struct pt_regs * regs,sigset_t32 *unewset, size_t sigsetsize)
+sys32_rt_sigsuspend(struct pt_regs * regs,compat_sigset_t *unewset, size_t sigsetsize)
{
sigset_t saveset, newset;
- sigset_t32 set32;
+ compat_sigset_t set32;
/* XXX: Don't preclude handling different sized sigset_t's. */
if (sigsetsize != sizeof(sigset_t))
@@ -169,7 +170,7 @@
int ret;
if (act) {
- old_sigset_t32 mask;
+ compat_old_sigset_t mask;
if (verify_area(VERIFY_READ, act, sizeof(*act)) ||
__get_user((unsigned long)new_ka.sa.sa_handler, &act->sa_handler) ||
__get_user((unsigned long)new_ka.sa.sa_restorer, &act->sa_restorer))
@@ -202,16 +203,16 @@
{
struct k_sigaction new_ka, old_ka;
int ret;
- sigset_t32 set32;
+ compat_sigset_t set32;
/* XXX: Don't preclude handling different sized sigset_t's. */
- if (sigsetsize != sizeof(sigset_t32))
+ if (sigsetsize != sizeof(compat_sigset_t))
return -EINVAL;
if (act) {
ret = get_user((unsigned long)new_ka.sa.sa_handler, &act->sa_handler);
ret |= __copy_from_user(&set32, &act->sa_mask,
- sizeof(sigset_t32));
+ sizeof(compat_sigset_t));
switch (_NSIG_WORDS) {
case 4: new_ka.sa.sa_mask.sig[3] = set32.sig[6]
| (((long)set32.sig[7]) << 32);
@@ -247,7 +248,7 @@
}
ret = put_user((unsigned long)old_ka.sa.sa_handler, &oact->sa_handler);
ret |= __copy_to_user(&oact->sa_mask, &set32,
- sizeof(sigset_t32));
+ sizeof(compat_sigset_t));
ret |= __put_user(old_ka.sa.sa_flags, &oact->sa_flags);
}
diff -ruN 2.5.58-32bit.4/include/asm-s390x/compat.h 2.5.58-32bit.5/include/asm-s390x/compat.h
--- 2.5.58-32bit.4/include/asm-s390x/compat.h 2003-01-14 09:57:58.000000000 +1100
+++ 2.5.58-32bit.5/include/asm-s390x/compat.h 2003-01-15 16:37:36.000000000 +1100
@@ -76,8 +76,15 @@
s32 f_files;
s32 f_ffree;
compat_fsid_t f_fsid;
- s32 f_namelen;
+ s32 f_namelen;
s32 f_spare[6];
};
+typedef u32 compat_old_sigset_t; /* at least 32 bits */
+
+#define _COMPAT_NSIG 64
+#define _COMPAT_NSIG_BPW 32
+
+typedef u32 compat_sigset_word;
+
#endif /* _ASM_S390X_COMPAT_H */
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH][COMPAT] compat_{old_}sigset_t mips64 part
2003-01-15 6:34 [PATCH][COMPAT] compat_{old_}sigset_t generic part Stephen Rothwell
` (4 preceding siblings ...)
2003-01-15 6:44 ` [PATCH][COMPAT] compat_{old_}sigset_t s390x part Stephen Rothwell
@ 2003-01-15 6:46 ` Stephen Rothwell
2003-01-15 6:47 ` [PATCH][COMPAT] compat_{old_}sigset_t parisc part Stephen Rothwell
6 siblings, 0 replies; 8+ messages in thread
From: Stephen Rothwell @ 2003-01-15 6:46 UTC (permalink / raw)
To: ralf; +Cc: torvalds, linux-kernel
Hi Ralf,
Here is the mips64 part of the patch.
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
diff -ruN 2.5.58-32bit.4/arch/mips64/kernel/signal32.c 2.5.58-32bit.5/arch/mips64/kernel/signal32.c
--- 2.5.58-32bit.4/arch/mips64/kernel/signal32.c 2003-01-02 15:13:45.000000000 +1100
+++ 2.5.58-32bit.5/arch/mips64/kernel/signal32.c 2003-01-15 16:12:21.000000000 +1100
@@ -39,20 +39,13 @@
/* 32-bit compatibility types */
-#define _NSIG32_BPW 32
-#define _NSIG32_WORDS (_NSIG / _NSIG32_BPW)
-
-typedef struct {
- unsigned int sig[_NSIG32_WORDS];
-} sigset32_t;
-
typedef unsigned int __sighandler32_t;
typedef void (*vfptr_t)(void);
struct sigaction32 {
unsigned int sa_flags;
__sighandler32_t sa_handler;
- sigset32_t sa_mask;
+ compat_sigset_t sa_mask;
unsigned int sa_restorer;
int sa_resv[1]; /* reserved */
};
@@ -98,7 +91,7 @@
extern void __get_sigset_unknown_nsig(void);
static inline int
-put_sigset(const sigset_t *kbuf, sigset32_t *ubuf)
+put_sigset(const sigset_t *kbuf, compat_sigset_t *ubuf)
{
int err = 0;
@@ -120,7 +113,7 @@
}
static inline int
-get_sigset(sigset_t *kbuf, const sigset32_t *ubuf)
+get_sigset(sigset_t *kbuf, const compat_sigset_t *ubuf)
{
int err = 0;
unsigned long sig[4];
@@ -150,11 +143,11 @@
asmlinkage inline int
sys32_sigsuspend(abi64_no_regargs, struct pt_regs regs)
{
- sigset32_t *uset;
+ compat_sigset_t *uset;
sigset_t newset, saveset;
save_static(®s);
- uset = (sigset32_t *) regs.regs[4];
+ uset = (compat_sigset_t *) regs.regs[4];
if (get_sigset(&newset, uset))
return -EFAULT;
sigdelsetmask(&newset, ~_BLOCKABLE);
@@ -178,17 +171,17 @@
asmlinkage int
sys32_rt_sigsuspend(abi64_no_regargs, struct pt_regs regs)
{
- sigset32_t *uset;
+ compat_sigset_t *uset;
sigset_t newset, saveset;
size_t sigsetsize;
save_static(®s);
/* XXX Don't preclude handling different sized sigset_t's. */
sigsetsize = regs.regs[5];
- if (sigsetsize != sizeof(sigset32_t))
+ if (sigsetsize != sizeof(compat_sigset_t))
return -EINVAL;
- uset = (sigset32_t *) regs.regs[4];
+ uset = (compat_sigset_t *) regs.regs[4];
if (get_sigset(&newset, uset))
return -EFAULT;
sigdelsetmask(&newset, ~_BLOCKABLE);
@@ -704,8 +697,8 @@
extern asmlinkage int sys_sigprocmask(int how, old_sigset_t *set,
old_sigset_t *oset);
-asmlinkage int sys32_sigprocmask(int how, old_sigset_t32 *set,
- old_sigset_t32 *oset)
+asmlinkage int sys32_sigprocmask(int how, compat_old_sigset_t *set,
+ compat_old_sigset_t *oset)
{
old_sigset_t s;
int ret;
@@ -723,7 +716,7 @@
asmlinkage long sys_sigpending(old_sigset_t *set);
-asmlinkage int sys32_sigpending(old_sigset_t32 *set)
+asmlinkage int sys32_sigpending(compat_old_sigset_t *set)
{
old_sigset_t pending;
int ret;
@@ -789,7 +782,7 @@
asmlinkage long sys_rt_sigprocmask(int how, sigset_t *set, sigset_t *oset,
size_t sigsetsize);
-asmlinkage int sys32_rt_sigprocmask(int how, sigset32_t *set, sigset32_t *oset,
+asmlinkage int sys32_rt_sigprocmask(int how, compat_sigset_t *set, compat_sigset_t *oset,
unsigned int sigsetsize)
{
sigset_t old_set, new_set;
@@ -812,7 +805,7 @@
asmlinkage long sys_rt_sigpending(sigset_t *set, size_t sigsetsize);
-asmlinkage int sys32_rt_sigpending(sigset32_t *uset, unsigned int sigsetsize)
+asmlinkage int sys32_rt_sigpending(compat_sigset_t *uset, unsigned int sigsetsize)
{
int ret;
sigset_t set;
diff -ruN 2.5.58-32bit.4/include/asm-mips64/compat.h 2.5.58-32bit.5/include/asm-mips64/compat.h
--- 2.5.58-32bit.4/include/asm-mips64/compat.h 2003-01-13 11:07:06.000000000 +1100
+++ 2.5.58-32bit.5/include/asm-mips64/compat.h 2003-01-15 16:34:58.000000000 +1100
@@ -80,4 +80,11 @@
int f_spare[6];
};
+typedef u32 compat_old_sigset_t;
+
+#define _COMPAT_NSIG 128
+#define _COMPAT_NSIG_BPW 32
+
+typedef u32 compat_sigset_word;
+
#endif /* _ASM_MIPS64_COMPAT_H */
diff -ruN 2.5.58-32bit.4/include/asm-mips64/signal.h 2.5.58-32bit.5/include/asm-mips64/signal.h
--- 2.5.58-32bit.4/include/asm-mips64/signal.h 2001-09-10 03:43:02.000000000 +1000
+++ 2.5.58-32bit.5/include/asm-mips64/signal.h 2003-01-15 14:59:25.000000000 +1100
@@ -20,7 +20,6 @@
} sigset_t;
typedef unsigned long old_sigset_t; /* at least 32 bits */
-typedef unsigned int old_sigset_t32;
#define SIGHUP 1 /* Hangup (POSIX). */
#define SIGINT 2 /* Interrupt (ANSI). */
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH][COMPAT] compat_{old_}sigset_t parisc part
2003-01-15 6:34 [PATCH][COMPAT] compat_{old_}sigset_t generic part Stephen Rothwell
` (5 preceding siblings ...)
2003-01-15 6:46 ` [PATCH][COMPAT] compat_{old_}sigset_t mips64 part Stephen Rothwell
@ 2003-01-15 6:47 ` Stephen Rothwell
6 siblings, 0 replies; 8+ messages in thread
From: Stephen Rothwell @ 2003-01-15 6:47 UTC (permalink / raw)
To: matthew; +Cc: torvalds, LKML
Hi Willy,
Here is the parisc part of the patch.
Thanks for catching up with the rest.
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
diff -ruN 2.5.58-32bit.4/arch/parisc/kernel/signal.c 2.5.58-32bit.5/arch/parisc/kernel/signal.c
--- 2.5.58-32bit.4/arch/parisc/kernel/signal.c 2003-01-15 11:20:31.000000000 +1100
+++ 2.5.58-32bit.5/arch/parisc/kernel/signal.c 2003-01-14 17:14:45.000000000 +1100
@@ -25,6 +25,7 @@
#include <linux/ptrace.h>
#include <linux/unistd.h>
#include <linux/stddef.h>
+#include <linux/compat.h>
#include <asm/ucontext.h>
#include <asm/rt_sigframe.h>
#include <asm/uaccess.h>
@@ -97,13 +98,13 @@
sigset_t saveset, newset;
#ifdef __LP64__
/* XXX FIXME -- assumes 32-bit user app! */
- sigset_t32 newset32;
+ compat_sigset_t newset32;
/* XXX: Don't preclude handling different sized sigset_t's. */
- if (sigsetsize != sizeof(sigset_t32))
+ if (sigsetsize != sizeof(compat_sigset_t))
return -EINVAL;
- if (copy_from_user(&newset32, (sigset_t32 *)unewset, sizeof(newset32)))
+ if (copy_from_user(&newset32, (compat_sigset_t *)unewset, sizeof(newset32)))
return -EFAULT;
newset.sig[0] = newset32.sig[0] | ((unsigned long)newset32.sig[1] << 32);
diff -ruN 2.5.58-32bit.4/arch/parisc/kernel/signal32.c 2.5.58-32bit.5/arch/parisc/kernel/signal32.c
--- 2.5.58-32bit.4/arch/parisc/kernel/signal32.c 2003-01-15 11:20:31.000000000 +1100
+++ 2.5.58-32bit.5/arch/parisc/kernel/signal32.c 2003-01-15 14:49:04.000000000 +1100
@@ -17,19 +17,17 @@
struct sigaction32 sa;
};
-typedef unsigned int old_sigset_t32;
-
static int
-put_old_sigset32(old_sigset_t32 *up, old_sigset_t *set)
+put_old_sigset32(compat_old_sigset_t *up, old_sigset_t *set)
{
- old_sigset_t32 set32 = *set;
+ compat_old_sigset_t set32 = *set;
return put_user(set32, up);
}
static int
-get_old_segset32(old_sigset_t32 *up, old_sigset_t *set)
+get_old_segset32(compat_old_sigset_t *up, old_sigset_t *set)
{
- old_sigset_t32 set32;
+ compat_old_sigset_t set32;
int r;
if ((r = get_user(set32, up)) == 0)
@@ -39,7 +37,7 @@
}
long
-sys32_sigpending(old_sigset_t32 *set)
+sys32_sigpending(compat_old_sigset_t *set)
{
extern long sys_sigpending(old_sigset_t *set);
old_sigset_t pending;
@@ -54,8 +52,8 @@
return ret;
}
-int sys32_sigprocmask(int how, old_sigset_t32 *set,
- old_sigset_t32 *oset)
+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);
@@ -71,22 +69,22 @@
}
static inline void
-sigset_32to64(sigset_t *s64, sigset_t32 *s32)
+sigset_32to64(sigset_t *s64, compat_sigset_t *s32)
{
s64->sig[0] = s32->sig[0] | ((unsigned long)s32->sig[1] << 32);
}
static inline void
-sigset_64to32(sigset_t32 *s32, sigset_t *s64)
+sigset_64to32(compat_sigset_t *s32, sigset_t *s64)
{
s32->sig[0] = s64->sig[0] & 0xffffffffUL;
s32->sig[1] = (s64->sig[0] >> 32) & 0xffffffffUL;
}
static int
-put_sigset32(sigset_t32 *up, sigset_t *set, size_t sz)
+put_sigset32(compat_sigset_t *up, sigset_t *set, size_t sz)
{
- sigset_t32 s;
+ compat_sigset_t s;
if (sz != sizeof *set) panic("put_sigset32()");
sigset_64to32(&s, set);
@@ -95,9 +93,9 @@
}
static int
-get_sigset32(sigset_t32 *up, sigset_t *set, size_t sz)
+get_sigset32(compat_sigset_t *up, sigset_t *set, size_t sz)
{
- sigset_t32 s;
+ compat_sigset_t s;
int r;
if (sz != sizeof *set) panic("put_sigset32()");
@@ -109,7 +107,7 @@
return r;
}
-int sys32_rt_sigprocmask(int how, sigset_t32 *set, sigset_t32 *oset,
+int sys32_rt_sigprocmask(int how, compat_sigset_t *set, compat_sigset_t *oset,
unsigned int sigsetsize)
{
extern long sys_rt_sigprocmask(int how,
@@ -131,7 +129,7 @@
}
-int sys32_rt_sigpending(sigset_t32 *uset, unsigned int sigsetsize)
+int sys32_rt_sigpending(compat_sigset_t *uset, unsigned int sigsetsize)
{
int ret;
sigset_t set;
diff -ruN 2.5.58-32bit.4/arch/parisc/kernel/sys32.h 2.5.58-32bit.5/arch/parisc/kernel/sys32.h
--- 2.5.58-32bit.4/arch/parisc/kernel/sys32.h 2003-01-15 11:20:31.000000000 +1100
+++ 2.5.58-32bit.5/arch/parisc/kernel/sys32.h 2003-01-14 17:19:41.000000000 +1100
@@ -14,15 +14,10 @@
typedef __u32 __sighandler_t32;
-#include <linux/signal.h>
-typedef struct {
- unsigned int sig[_NSIG_WORDS * 2];
-} sigset_t32;
-
struct sigaction32 {
__sighandler_t32 sa_handler;
unsigned int sa_flags;
- sigset_t32 sa_mask; /* mask last for extensibility */
+ compat_sigset_t sa_mask; /* mask last for extensibility */
};
#endif
diff -ruN 2.5.58-32bit.4/include/asm-parisc/compat.h 2.5.58-32bit.5/include/asm-parisc/compat.h
--- 2.5.58-32bit.4/include/asm-parisc/compat.h 2003-01-14 11:46:52.000000000 +1100
+++ 2.5.58-32bit.5/include/asm-parisc/compat.h 2003-01-15 16:36:06.000000000 +1100
@@ -37,7 +37,7 @@
compat_dev_t st_dev; /* dev_t is 32 bits on parisc */
compat_ino_t st_ino; /* 32 bits */
compat_mode_t st_mode; /* 16 bits */
- compat_nlink_t st_nlink; /* 16 bits */
+ compat_nlink_t st_nlink; /* 16 bits */
u16 st_reserved1; /* old st_uid */
u16 st_reserved2; /* old st_gid */
compat_dev_t st_rdev;
@@ -85,4 +85,11 @@
s32 f_spare[6];
};
+typedef u32 compat_old_sigset_t;
+
+#define _COMPAT_NSIG 64
+#define _COMPAT_NSIG_BPW 32
+
+typedef u32 compat_sigset_word;
+
#endif /* _ASM_PARISC_COMPAT_H */
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2003-01-15 6:38 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-01-15 6:34 [PATCH][COMPAT] compat_{old_}sigset_t generic part Stephen Rothwell
2003-01-15 6:36 ` [PATCH][COMPAT] compat_{old_}sigset_t ppc64 Stephen Rothwell
2003-01-15 6:39 ` [PATCH][COMPAT] compat_{old_}sigset_t sparc64 Stephen Rothwell
2003-01-15 6:40 ` PATCH][COMPAT] compat_{old_}sigset_t x86_64 part Stephen Rothwell
2003-01-15 6:42 ` [PATCH][COMPAT] compat_{old_}sigset_t ia64 part Stephen Rothwell
2003-01-15 6:44 ` [PATCH][COMPAT] compat_{old_}sigset_t s390x part Stephen Rothwell
2003-01-15 6:46 ` [PATCH][COMPAT] compat_{old_}sigset_t mips64 part Stephen Rothwell
2003-01-15 6:47 ` [PATCH][COMPAT] compat_{old_}sigset_t parisc part Stephen Rothwell
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).