]> git.neil.brown.name Git - history.git/commitdiff
ppc64: compat_sys_[f]statfs, from Stephen Rothwell
authorAnton Blanchard <anton@samba.org>
Tue, 14 Jan 2003 05:35:24 +0000 (16:35 +1100)
committerAnton Blanchard <anton@samba.org>
Tue, 14 Jan 2003 05:35:24 +0000 (16:35 +1100)
arch/ppc64/kernel/misc.S
arch/ppc64/kernel/sys_ppc32.c
include/asm-ppc64/compat.h
include/asm-ppc64/ppc32.h

index 236111b5719bf74b21a28ce08507808526bdfd3a..45bdc21e615d329b40824c05b5bc92944331170d 100644 (file)
@@ -567,8 +567,8 @@ _GLOBAL(sys_call_table32)
        .llong .sys32_getpriority
        .llong .sys32_setpriority
        .llong .sys_ni_syscall          /* old profil syscall */
-       .llong .sys32_statfs
-       .llong .sys32_fstatfs           /* 100 */
+       .llong .compat_sys_statfs
+       .llong .compat_sys_fstatfs              /* 100 */
        .llong .sys_ioperm
        .llong .sys32_socketcall
        .llong .sys32_syslog
index ec1fe11d22616b382095afb51ff4e5019221706c..20e5999c50353ac4b1109dfee4e361289696bcde 100644 (file)
@@ -807,65 +807,6 @@ int cp_compat_stat(struct kstat *stat, struct compat_stat *statbuf)
        return err;
 }
 
-static inline int put_statfs (struct statfs32 *ubuf, struct statfs *kbuf)
-{
-       int err;
-       
-       err = put_user (kbuf->f_type, &ubuf->f_type);
-       err |= __put_user (kbuf->f_bsize, &ubuf->f_bsize);
-       err |= __put_user (kbuf->f_blocks, &ubuf->f_blocks);
-       err |= __put_user (kbuf->f_bfree, &ubuf->f_bfree);
-       err |= __put_user (kbuf->f_bavail, &ubuf->f_bavail);
-       err |= __put_user (kbuf->f_files, &ubuf->f_files);
-       err |= __put_user (kbuf->f_ffree, &ubuf->f_ffree);
-       err |= __put_user (kbuf->f_namelen, &ubuf->f_namelen);
-       err |= __put_user (kbuf->f_fsid.val[0], &ubuf->f_fsid.val[0]);
-       err |= __put_user (kbuf->f_fsid.val[1], &ubuf->f_fsid.val[1]);
-       return err;
-}
-
-extern asmlinkage int sys_statfs(const char * path, struct statfs * buf);
-
-asmlinkage long sys32_statfs(const char * path, struct statfs32 *buf)
-{
-       int ret;
-       struct statfs s;
-       mm_segment_t old_fs = get_fs();
-       char *pth;
-       
-       pth = getname (path);
-       ret = PTR_ERR(pth);
-       if (!IS_ERR(pth)) {
-               set_fs (KERNEL_DS);
-               ret = sys_statfs((const char *)pth, &s);
-               set_fs (old_fs);
-               putname (pth);
-               if (put_statfs(buf, &s))
-                       return -EFAULT;
-       }
-       
-       return ret;
-}
-
-extern asmlinkage long sys_fstatfs(unsigned int fd, struct statfs * buf);
-
-asmlinkage long sys32_fstatfs(unsigned int fd, struct statfs32 *buf)
-{
-       int ret;
-       struct statfs s;
-       mm_segment_t old_fs = get_fs();
-       
-       set_fs (KERNEL_DS);
-       ret = sys_fstatfs(fd, &s);
-       set_fs (old_fs);
-       if (put_statfs(buf, &s))
-               return -EFAULT;
-       
-       return ret;
-}
-
-
-
 extern asmlinkage long sys_sysfs(int option, unsigned long arg1, unsigned long arg2);
 
 /* Note: it is necessary to treat option as an unsigned int,
index a32b56af16b5eb19436fbf52f4f146e164c17980..df4eaaebeaf404c5e4779f3ec5b82ad0cf8558cf 100644 (file)
@@ -64,4 +64,17 @@ struct compat_flock {
        short           __unused;
 };
 
+struct compat_statfs {
+       int             f_type;
+       int             f_bsize;
+       int             f_blocks;
+       int             f_bfree;
+       int             f_bavail;
+       int             f_files;
+       int             f_ffree;
+       compat_fsid_t   f_fsid;
+       int             f_namelen;      /* SunOS ignores this field. */
+       int             f_spare[6];
+};
+
 #endif /* _ASM_PPC64_COMPAT_H */
index 019ae718e38b00723ae42be98d9065d8b593bbbc..43732a5486227fd77e3dfe1e5dac83d4001a8fe6 100644 (file)
 
 /* These are here to support 32-bit syscalls on a 64-bit kernel. */
 
-struct statfs32 {
-       int f_type;
-       int f_bsize;
-       int f_blocks;
-       int f_bfree;
-       int f_bavail;
-       int f_files;
-       int f_ffree;
-       compat_fsid_t f_fsid;
-       int f_namelen;  /* SunOS ignores this field. */
-       int f_spare[6];
-};
-
 typedef union sigval32 {
        int sival_int;
        unsigned int sival_ptr;