Patch from Stephen Rothwell <sfr@canb.auug.org.au>

Hi Anton,

Here is the ppc64 part.  Please apply after Linus has applied the generic
part.



 arch/ppc64/kernel/misc.S      |    4 ++--
 arch/ppc64/kernel/sys_ppc32.c |   33 ---------------------------------
 include/asm-ppc64/compat.h    |   16 +++++++++++++++-
 include/asm-ppc64/fcntl.h     |   13 +------------
 4 files changed, 18 insertions(+), 48 deletions(-)

diff -puN arch/ppc64/kernel/misc.S~ppc64-compat-flock arch/ppc64/kernel/misc.S
--- 25/arch/ppc64/kernel/misc.S~ppc64-compat-flock	2003-03-14 20:27:34.000000000 -0800
+++ 25-akpm/arch/ppc64/kernel/misc.S	2003-03-14 20:27:35.000000000 -0800
@@ -557,7 +557,7 @@ _GLOBAL(sys_call_table32)
 	.llong .sys32_umount
 	.llong .sys_ni_syscall		/* old lock syscall */
 	.llong .sys32_ioctl
-	.llong .sys32_fcntl		/* 55 */
+	.llong .compat_sys_fcntl	/* 55 */
 	.llong .sys_ni_syscall		/* old mpx syscall */
 	.llong .sys32_setpgid
 	.llong .sys_ni_syscall		/* old ulimit syscall */
@@ -706,7 +706,7 @@ _GLOBAL(sys_call_table32)
 	.llong .sys_ni_syscall		/* reserved for MacOnLinux */
 	.llong .sys_getdents64
 	.llong .sys_pivot_root
-	.llong .sys32_fcntl64
+	.llong .compat_sys_fcntl64
 	.llong .sys_madvise		/* 205 */
 	.llong .sys_mincore
 	.llong .sys_gettid
diff -puN arch/ppc64/kernel/sys_ppc32.c~ppc64-compat-flock arch/ppc64/kernel/sys_ppc32.c
--- 25/arch/ppc64/kernel/sys_ppc32.c~ppc64-compat-flock	2003-03-14 20:27:34.000000000 -0800
+++ 25-akpm/arch/ppc64/kernel/sys_ppc32.c	2003-03-14 20:27:35.000000000 -0800
@@ -248,32 +248,6 @@ out:
 	return ret;
 }
 
-extern asmlinkage long sys_fcntl(unsigned int fd, unsigned int cmd, unsigned long arg);
-asmlinkage long sys32_fcntl(unsigned int fd, unsigned int cmd, unsigned long arg)
-{
-	switch (cmd) {
-	case F_GETLK:
-	case F_SETLK:
-	case F_SETLKW:
-	{
-		struct flock f;
-		mm_segment_t old_fs;
-		long ret;
-
-		if(get_compat_flock(&f, (struct compat_flock *)arg))
-			return -EFAULT;
-		old_fs = get_fs(); set_fs (KERNEL_DS);
-		ret = sys_fcntl(fd, cmd, (unsigned long)&f);
-		set_fs (old_fs);
-		if(put_compat_flock(&f, (struct compat_flock *)arg))
-			return -EFAULT;
-		return ret;
-	}
-	default:
-		return sys_fcntl(fd, cmd, (unsigned long)arg);
-	}
-}
-
 struct ncp_mount_data32_v3 {
         int version;
         unsigned int ncp_fd;
@@ -2850,13 +2824,6 @@ asmlinkage long sys32_umount(char * name
 	return sys_umount(name, (int)flags);
 }
 
-asmlinkage long sys32_fcntl64(unsigned int fd, unsigned int cmd, unsigned long arg)
-{
-	if (cmd >= F_GETLK64 && cmd <= F_SETLKW64)
-		return sys_fcntl(fd, cmd + F_GETLK - F_GETLK64, arg);
-	return sys32_fcntl(fd, cmd, arg);
-}
-
 struct __sysctl_args32 {
 	u32 name;
 	int nlen;
diff -puN include/asm-ppc64/compat.h~ppc64-compat-flock include/asm-ppc64/compat.h
--- 25/include/asm-ppc64/compat.h~ppc64-compat-flock	2003-03-14 20:27:34.000000000 -0800
+++ 25-akpm/include/asm-ppc64/compat.h	2003-03-14 20:27:35.000000000 -0800
@@ -61,7 +61,18 @@ struct compat_flock {
 	compat_off_t	l_start;
 	compat_off_t	l_len;
 	compat_pid_t	l_pid;
-	short		__unused;
+};
+
+#define F_GETLK64	12	/*  using 'struct flock64' */
+#define F_SETLK64	13
+#define F_SETLKW64	14
+
+struct compat_flock64 {
+	short		l_type;
+	short		l_whence;
+	compat_loff_t	l_start;
+	compat_loff_t	l_len;
+	compat_pid_t	l_pid;
 };
 
 struct compat_statfs {
@@ -84,4 +95,7 @@ typedef u32		compat_old_sigset_t;
 
 typedef u32		compat_sigset_word;
 
+#define COMPAT_OFF_T_MAX	0x7fffffff
+#define COMPAT_LOFF_T_MAX	0x7fffffffffffffffL
+
 #endif /* _ASM_PPC64_COMPAT_H */
diff -puN include/asm-ppc64/fcntl.h~ppc64-compat-flock include/asm-ppc64/fcntl.h
--- 25/include/asm-ppc64/fcntl.h~ppc64-compat-flock	2003-03-14 20:27:35.000000000 -0800
+++ 25-akpm/include/asm-ppc64/fcntl.h	2003-03-14 20:27:35.000000000 -0800
@@ -42,10 +42,6 @@
 #define F_SETSIG	10	/*  for sockets. */
 #define F_GETSIG	11	/*  for sockets. */
 
-#define F_GETLK64	12	/*  using 'struct flock64' */
-#define F_SETLK64	13
-#define F_SETLKW64	14
-
 /* for F_[GET|SET]FL */
 #define FD_CLOEXEC	1	/* actually anything with low bit set goes */
 
@@ -87,13 +83,6 @@ struct flock {
 	pid_t l_pid;
 };
 
-struct flock64 {
-	short  l_type;
-	short  l_whence;
-	loff_t l_start;
-	loff_t l_len;
-	pid_t  l_pid;
-};
-
 #define F_LINUX_SPECIFIC_BASE	1024
+
 #endif /* _PPC64_FCNTL_H */

_