[PATCH][COMPAT] compat_sys_sigpending and compat_sys_sigprocmask

Stephen Rothwell (sfr@canb.auug.org.au)
Thu, 16 Jan 2003 14:51:36 +1100


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) - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/