[COMPAT] compat_sys_fcntl{,64} 2/9 ppc64 part

[COMPAT] compat_sys_fcntl{,64} 2/9 ppc64 part

Post by Stephen Rothwel » Wed, 12 Mar 2003 02:50:09



Hi Anton,

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

--
Cheers,

http://www.canb.auug.org.au/~sfr/

diff -ruN 2.5.64-2003030918-32bit.1/arch/ppc64/kernel/misc.S 2.5.64-2003030918-32bit.2/arch/ppc64/kernel/misc.S
--- 2.5.64-2003030918-32bit.1/arch/ppc64/kernel/misc.S  2003-02-25 12:59:28.000000000 +1100

        .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          /* 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 -ruN 2.5.64-2003030918-32bit.1/arch/ppc64/kernel/sys_ppc32.c 2.5.64-2003030918-32bit.2/arch/ppc64/kernel/sys_ppc32.c
--- 2.5.64-2003030918-32bit.1/arch/ppc64/kernel/sys_ppc32.c     2003-02-25 12:59:29.000000000 +1100

        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;

        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 -ruN 2.5.64-2003030918-32bit.1/include/asm-ppc64/compat.h 2.5.64-2003030918-32bit.2/include/asm-ppc64/compat.h
--- 2.5.64-2003030918-32bit.1/include/asm-ppc64/compat.h        2003-02-11 09:39:59.000000000 +1100

        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;
 };


 typedef u32            compat_sigset_word;

+#define COMPAT_OFF_T_MAX       0x7fffffff
+#define COMPAT_LOFF_T_MAX      0x7fffffffffffffffL
+
 #endif /* _ASM_PPC64_COMPAT_H */
diff -ruN 2.5.64-2003030918-32bit.1/include/asm-ppc64/fcntl.h 2.5.64-2003030918-32bit.2/include/asm-ppc64/fcntl.h
--- 2.5.64-2003030918-32bit.1/include/asm-ppc64/fcntl.h 2002-06-03 12:13:01.000000000 +1000

 #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 */

        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 */
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/