From: Stephen Rothwell <sfr@canb.auug.org.au>

This patch is based on work by Carlos O'Donell and Matthew Wilcox.  It
introduces/updates the compat_time_t type and uses it for compat siginfo
structures.  I have built this on ppc64 and x86_64.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 arch/ia64/ia32/ia32priv.h       |    2 +-
 arch/s390/kernel/compat_linux.h |    2 +-
 arch/sparc64/kernel/signal32.c  |    2 +-
 include/asm-ia64/compat.h       |    1 +
 include/asm-mips/compat.h       |    1 +
 include/asm-parisc/compat.h     |    2 +-
 include/asm-ppc64/compat.h      |    1 +
 include/asm-ppc64/ppc32.h       |    2 +-
 include/asm-sparc64/compat.h    |    1 +
 include/asm-x86_64/ia32.h       |    2 +-
 10 files changed, 10 insertions(+), 6 deletions(-)

diff -puN arch/ia64/ia32/ia32priv.h~compat-introduce-compat_time_t arch/ia64/ia32/ia32priv.h
--- 25/arch/ia64/ia32/ia32priv.h~compat-introduce-compat_time_t	2005-05-31 02:30:45.000000000 -0700
+++ 25-akpm/arch/ia64/ia32/ia32priv.h	2005-05-31 02:30:45.000000000 -0700
@@ -241,7 +241,7 @@ typedef struct compat_siginfo {
 
 		/* POSIX.1b timers */
 		struct {
-			timer_t _tid;		/* timer id */
+			compat_timer_t _tid;		/* timer id */
 			int _overrun;		/* overrun count */
 			char _pad[sizeof(unsigned int) - sizeof(int)];
 			compat_sigval_t _sigval;	/* same as below */
diff -puN arch/s390/kernel/compat_linux.h~compat-introduce-compat_time_t arch/s390/kernel/compat_linux.h
--- 25/arch/s390/kernel/compat_linux.h~compat-introduce-compat_time_t	2005-05-31 02:30:45.000000000 -0700
+++ 25-akpm/arch/s390/kernel/compat_linux.h	2005-05-31 02:30:45.000000000 -0700
@@ -45,7 +45,7 @@ typedef struct compat_siginfo {
 
 		/* POSIX.1b timers */
 		struct {
-			timer_t _tid;		/* timer id */
+			compat_timer_t _tid;		/* timer id */
 			int _overrun;		/* overrun count */
 			compat_sigval_t _sigval;	/* same as below */
 			int _sys_private;       /* not to be passed to user */
diff -puN arch/sparc64/kernel/signal32.c~compat-introduce-compat_time_t arch/sparc64/kernel/signal32.c
--- 25/arch/sparc64/kernel/signal32.c~compat-introduce-compat_time_t	2005-05-31 02:30:45.000000000 -0700
+++ 25-akpm/arch/sparc64/kernel/signal32.c	2005-05-31 02:30:45.000000000 -0700
@@ -102,7 +102,7 @@ typedef struct compat_siginfo{
 
 		/* POSIX.1b timers */
 		struct {
-			timer_t _tid;			/* timer id */
+			compat_timer_t _tid;			/* timer id */
 			int _overrun;			/* overrun count */
 			compat_sigval_t _sigval;		/* same as below */
 			int _sys_private;		/* not to be passed to user */
diff -puN include/asm-ia64/compat.h~compat-introduce-compat_time_t include/asm-ia64/compat.h
--- 25/include/asm-ia64/compat.h~compat-introduce-compat_time_t	2005-05-31 02:30:45.000000000 -0700
+++ 25-akpm/include/asm-ia64/compat.h	2005-05-31 02:30:45.000000000 -0700
@@ -27,6 +27,7 @@ typedef u16		compat_ipc_pid_t;
 typedef s32		compat_daddr_t;
 typedef u32		compat_caddr_t;
 typedef __kernel_fsid_t	compat_fsid_t;
+typedef s32		compat_timer_t;
 
 typedef s32		compat_int_t;
 typedef s32		compat_long_t;
diff -puN include/asm-mips/compat.h~compat-introduce-compat_time_t include/asm-mips/compat.h
--- 25/include/asm-mips/compat.h~compat-introduce-compat_time_t	2005-05-31 02:30:45.000000000 -0700
+++ 25-akpm/include/asm-mips/compat.h	2005-05-31 02:30:45.000000000 -0700
@@ -29,6 +29,7 @@ typedef s32		compat_caddr_t;
 typedef struct {
 	s32	val[2];
 } compat_fsid_t;
+typedef s32		compat_timer_t;
 
 typedef s32		compat_int_t;
 typedef s32		compat_long_t;
diff -puN include/asm-parisc/compat.h~compat-introduce-compat_time_t include/asm-parisc/compat.h
--- 25/include/asm-parisc/compat.h~compat-introduce-compat_time_t	2005-05-31 02:30:45.000000000 -0700
+++ 25-akpm/include/asm-parisc/compat.h	2005-05-31 02:30:45.000000000 -0700
@@ -24,7 +24,7 @@ typedef u16	compat_nlink_t;
 typedef u16	compat_ipc_pid_t;
 typedef s32	compat_daddr_t;
 typedef u32	compat_caddr_t;
-typedef u32	compat_timer_t;
+typedef s32	compat_timer_t;
 
 typedef s32	compat_int_t;
 typedef s32	compat_long_t;
diff -puN include/asm-ppc64/compat.h~compat-introduce-compat_time_t include/asm-ppc64/compat.h
--- 25/include/asm-ppc64/compat.h~compat-introduce-compat_time_t	2005-05-31 02:30:45.000000000 -0700
+++ 25-akpm/include/asm-ppc64/compat.h	2005-05-31 02:30:45.000000000 -0700
@@ -26,6 +26,7 @@ typedef s32		compat_daddr_t;
 typedef u32		compat_caddr_t;
 typedef __kernel_fsid_t	compat_fsid_t;
 typedef s32		compat_key_t;
+typedef s32		compat_timer_t;
 
 typedef s32		compat_int_t;
 typedef s32		compat_long_t;
diff -puN include/asm-ppc64/ppc32.h~compat-introduce-compat_time_t include/asm-ppc64/ppc32.h
--- 25/include/asm-ppc64/ppc32.h~compat-introduce-compat_time_t	2005-05-31 02:30:45.000000000 -0700
+++ 25-akpm/include/asm-ppc64/ppc32.h	2005-05-31 02:30:45.000000000 -0700
@@ -32,7 +32,7 @@ typedef struct compat_siginfo {
 
 		/* POSIX.1b timers */
 		struct {
-			timer_t _tid;			/* timer id */
+			compat_timer_t _tid;			/* timer id */
 			int _overrun;			/* overrun count */
 			compat_sigval_t _sigval;		/* same as below */
 			int _sys_private;		/* not to be passed to user */
diff -puN include/asm-sparc64/compat.h~compat-introduce-compat_time_t include/asm-sparc64/compat.h
--- 25/include/asm-sparc64/compat.h~compat-introduce-compat_time_t	2005-05-31 02:30:45.000000000 -0700
+++ 25-akpm/include/asm-sparc64/compat.h	2005-05-31 02:30:45.000000000 -0700
@@ -25,6 +25,7 @@ typedef s32		compat_daddr_t;
 typedef u32		compat_caddr_t;
 typedef __kernel_fsid_t	compat_fsid_t;
 typedef s32		compat_key_t;
+typedef s32		compat_timer_t;
 
 typedef s32		compat_int_t;
 typedef s32		compat_long_t;
diff -puN include/asm-x86_64/ia32.h~compat-introduce-compat_time_t include/asm-x86_64/ia32.h
--- 25/include/asm-x86_64/ia32.h~compat-introduce-compat_time_t	2005-05-31 02:30:45.000000000 -0700
+++ 25-akpm/include/asm-x86_64/ia32.h	2005-05-31 02:30:45.000000000 -0700
@@ -94,7 +94,7 @@ typedef struct compat_siginfo{
 
 		/* POSIX.1b timers */
 		struct {
-			int _tid;		/* timer id */
+			compat_timer_t _tid;	/* timer id */
 			int _overrun;		/* overrun count */
 			compat_sigval_t _sigval;	/* same as below */
 			int _sys_private;	/* not to be passed to user */
_