]> git.hungrycats.org Git - linux/commitdiff
[PATCH] prepare for 32-bit dev_t: stat()
authorAlexander Viro <viro@www.linux.org.uk>
Tue, 23 Sep 2003 05:52:09 +0000 (22:52 -0700)
committerLinus Torvalds <torvalds@home.osdl.org>
Tue, 23 Sep 2003 05:52:09 +0000 (22:52 -0700)
Added old_encode_dev() to assorted stat() variants.
Fixed bug in s390 emulation on s390x: stat64() should never truncate
UID and GID.
Ditto for i386 emulation on x86_64.
Replaced dev_t in various struct stat with explicit integer type.
Replaced __kernel_dev_t with __old_kernel_dev_t in dm-ioctl-v1.h
Now we are free to change dev_t in any way we want - on all boundaries
we have explicit conversions.
Took __kernel_dev_t definition to linux/types.h and changed it with
__u16.  We are ready to proceed to 32bit now.

34 files changed:
arch/ia64/ia32/sys_ia32.c
arch/mips/kernel/linux32.c
arch/parisc/hpux/fs.c
arch/parisc/kernel/sys_parisc32.c
arch/ppc64/kernel/sys_ppc32.c
arch/s390/kernel/compat_linux.c
arch/sparc64/kernel/sys_sparc32.c
arch/x86_64/ia32/sys_ia32.c
fs/stat.c
include/asm-alpha/posix_types.h
include/asm-arm/posix_types.h
include/asm-arm26/posix_types.h
include/asm-cris/posix_types.h
include/asm-h8300/posix_types.h
include/asm-i386/posix_types.h
include/asm-ia64/posix_types.h
include/asm-m68k/posix_types.h
include/asm-mips/posix_types.h
include/asm-mips/stat.h
include/asm-parisc/posix_types.h
include/asm-parisc/stat.h
include/asm-ppc/posix_types.h
include/asm-ppc/stat.h
include/asm-ppc64/posix_types.h
include/asm-ppc64/stat.h
include/asm-s390/posix_types.h
include/asm-sh/posix_types.h
include/asm-sparc/posix_types.h
include/asm-sparc64/posix_types.h
include/asm-sparc64/stat.h
include/asm-v850/posix_types.h
include/asm-x86_64/posix_types.h
include/linux/dm-ioctl-v1.h
include/linux/types.h

index d4931dc98dbd497810557c1279bf488849275188..074d2056522bcd2d08e277b52f80b511cae40212 100644 (file)
@@ -186,13 +186,13 @@ int cp_compat_stat(struct kstat *stat, struct compat_stat *ubuf)
        if (clear_user(ubuf, sizeof(*ubuf)))
                return -EFAULT;
 
-       err  = __put_user(stat->dev, &ubuf->st_dev);
+       err  = __put_user(old_encode_dev(stat->dev), &ubuf->st_dev);
        err |= __put_user(stat->ino, &ubuf->st_ino);
        err |= __put_user(stat->mode, &ubuf->st_mode);
        err |= __put_user(stat->nlink, &ubuf->st_nlink);
        err |= __put_user(high2lowuid(stat->uid), &ubuf->st_uid);
        err |= __put_user(high2lowgid(stat->gid), &ubuf->st_gid);
-       err |= __put_user(stat->rdev, &ubuf->st_rdev);
+       err |= __put_user(old_encode_dev(stat->rdev), &ubuf->st_rdev);
        err |= __put_user(stat->size, &ubuf->st_size);
        err |= __put_user(stat->atime.tv_sec, &ubuf->st_atime);
        err |= __put_user(stat->atime.tv_nsec, &ubuf->st_atime_nsec);
@@ -2488,7 +2488,7 @@ putstat64 (struct stat64 *ubuf, struct kstat *kbuf)
        if (clear_user(ubuf, sizeof(*ubuf)))
                return -EFAULT;
 
-       err  = __put_user(kbuf->dev, &ubuf->st_dev);
+       err  = __put_user(old_encode_dev(kbuf->dev), &ubuf->st_dev);
        err |= __put_user(kbuf->ino, &ubuf->__st_ino);
        err |= __put_user(kbuf->ino, &ubuf->st_ino_lo);
        err |= __put_user(kbuf->ino >> 32, &ubuf->st_ino_hi);
@@ -2496,7 +2496,7 @@ putstat64 (struct stat64 *ubuf, struct kstat *kbuf)
        err |= __put_user(kbuf->nlink, &ubuf->st_nlink);
        err |= __put_user(kbuf->uid, &ubuf->st_uid);
        err |= __put_user(kbuf->gid, &ubuf->st_gid);
-       err |= __put_user(kbuf->rdev, &ubuf->st_rdev);
+       err |= __put_user(old_encode_dev(kbuf->rdev), &ubuf->st_rdev);
        err |= __put_user(kbuf->size, &ubuf->st_size_lo);
        err |= __put_user((kbuf->size >> 32), &ubuf->st_size_hi);
        err |= __put_user(kbuf->atime.tv_sec, &ubuf->st_atime);
index 71cd8d6f62e38b76806ee6e89390d73de992182b..2bf7a6606bf0ee2ad79b5747d98398888a9d4e4e 100644 (file)
@@ -72,13 +72,13 @@ int cp_compat_stat(struct kstat *stat, struct compat_stat *statbuf)
        struct compat_stat tmp;
 
        memset(&tmp, 0, sizeof(tmp));
-       tmp.st_dev = stat->dev;
+       tmp.st_dev = old_encode_dev(stat->dev);
        tmp.st_ino = stat->ino;
        tmp.st_mode = stat->mode;
        tmp.st_nlink = stat->nlink;
        SET_STAT_UID(tmp, stat->uid);
        SET_STAT_GID(tmp, stat->gid);
-       tmp.st_rdev = stat->rdev;
+       tmp.st_rdev = old_encode_dev(stat->rdev);
        tmp.st_size = stat->size;
        tmp.st_atime = stat->atime.tv_sec;
        tmp.st_mtime = stat->mtime.tv_sec;
index c22c789091e15ea8e69be150b82e45363e4d38dd..4c6d90523a20566df99651ae5d35866315f3b7d9 100644 (file)
@@ -124,13 +124,13 @@ static int cp_hpux_stat(struct kstat *stat, struct hpux_stat64 *statbuf)
        struct hpux_stat64 tmp;
 
        memset(&tmp, 0, sizeof(tmp));
-       tmp.st_dev = stat->dev;
+       tmp.st_dev = old_encode_dev(stat->dev);
        tmp.st_ino = stat->ino;
        tmp.st_mode = stat->mode;
        tmp.st_nlink = stat->nlink;
        tmp.st_uid = stat->uid;
        tmp.st_gid = stat->gid;
-       tmp.st_rdev = stat->rdev;
+       tmp.st_rdev = old_encode_dev(stat->rdev);
        tmp.st_size = stat->size;
        tmp.st_atime = stat->atime.tv_sec;
        tmp.st_mtime = stat->mtime.tv_sec;
index f251f86c86ecf860aeb21b35327bc9769ac4e000..ecee05505944ecf600b1a2be8c4deff1d9cb7fdb 100644 (file)
@@ -442,13 +442,13 @@ int cp_compat_stat(struct kstat *stat, struct compat_stat *statbuf)
        if (stat->size > MAX_NON_LFS)
                return -EOVERFLOW;
 
-       err  = put_user(stat->dev, &statbuf->st_dev);
+       err  = put_user(old_encode_dev(stat->dev), &statbuf->st_dev);
        err |= put_user(stat->ino, &statbuf->st_ino);
        err |= put_user(stat->mode, &statbuf->st_mode);
        err |= put_user(stat->nlink, &statbuf->st_nlink);
        err |= put_user(0, &statbuf->st_reserved1);
        err |= put_user(0, &statbuf->st_reserved2);
-       err |= put_user(stat->rdev, &statbuf->st_rdev);
+       err |= put_user(old_encode_dev(stat->rdev), &statbuf->st_rdev);
        err |= put_user(stat->size, &statbuf->st_size);
        err |= put_user(stat->atime.tv_sec, &statbuf->st_atime);
        err |= put_user(stat->atime.tv_nsec, &statbuf->st_atime_nsec);
index eb233031bbb6ec19f3df444881a5b93f6a7e46f3..cb05a6b38497725b6381db6ffcfb4fdc69dd3d20 100644 (file)
@@ -751,13 +751,13 @@ int cp_compat_stat(struct kstat *stat, struct compat_stat *statbuf)
        if (stat->size > MAX_NON_LFS)
                return -EOVERFLOW;
 
-       err  = put_user(stat->dev, &statbuf->st_dev);
+       err  = put_user(old_encode_dev(stat->dev), &statbuf->st_dev);
        err |= put_user(stat->ino, &statbuf->st_ino);
        err |= put_user(stat->mode, &statbuf->st_mode);
        err |= put_user(stat->nlink, &statbuf->st_nlink);
        err |= put_user(stat->uid, &statbuf->st_uid);
        err |= put_user(stat->gid, &statbuf->st_gid);
-       err |= put_user(stat->rdev, &statbuf->st_rdev);
+       err |= put_user(old_encode_dev(stat->rdev), &statbuf->st_rdev);
        err |= put_user(stat->size, &statbuf->st_size);
        err |= put_user(stat->atime.tv_sec, &statbuf->st_atime);
        err |= put_user(0, &statbuf->__unused1);
index 8c701ecb92e493661429718c2866a73cba9b1459..4e41cbebf8b89947360d21c6472fd861bd57cb7e 100644 (file)
@@ -1316,13 +1316,13 @@ int cp_compat_stat(struct kstat *stat, struct compat_stat *statbuf)
 {
        int err;
 
-       err = put_user(stat->dev, &statbuf->st_dev);
+       err = put_user(old_encode_dev(stat->dev), &statbuf->st_dev);
        err |= put_user(stat->ino, &statbuf->st_ino);
        err |= put_user(stat->mode, &statbuf->st_mode);
        err |= put_user(stat->nlink, &statbuf->st_nlink);
        err |= put_user(high2lowuid(stat->uid), &statbuf->st_uid);
        err |= put_user(high2lowgid(stat->gid), &statbuf->st_gid);
-       err |= put_user(stat->rdev, &statbuf->st_rdev);
+       err |= put_user(old_encode_dev(stat->rdev), &statbuf->st_rdev);
        err |= put_user(stat->size, &statbuf->st_size);
        err |= put_user(stat->atime.tv_sec, &statbuf->st_atime);
        err |= put_user(stat->atime.tv_nsec, &statbuf->st_atime_nsec);
@@ -2543,8 +2543,7 @@ extern asmlinkage long sys32_sysctl(struct __sysctl_args32 *args)
 }
 
 struct stat64_emu31 {
-       unsigned char   __pad0[6];
-       unsigned short  st_dev;
+       unsigned long long  st_dev;
        unsigned int    __pad1;
 #define STAT64_HAS_BROKEN_ST_INO        1
        u32             __st_ino;
@@ -2552,8 +2551,7 @@ struct stat64_emu31 {
        unsigned int    st_nlink;
        u32             st_uid;
        u32             st_gid;
-       unsigned char   __pad2[6];
-       unsigned short  st_rdev;
+       unsigned long long  st_rdev;
        unsigned int    __pad3;
        long            st_size;
        u32             st_blksize;
@@ -2569,93 +2567,55 @@ struct stat64_emu31 {
        unsigned long   st_ino;
 };     
 
-static inline int
-putstat64 (struct stat64_emu31 *ubuf, struct stat *kbuf)
+static int cp_stat64(struct stat64_emu31 *ubuf, struct kstat *stat)
 {
-    struct stat64_emu31 tmp;
-   
-    memset(&tmp, 0, sizeof(tmp));
+       struct stat64_emu31 tmp;
 
-    tmp.st_dev = (unsigned short)kbuf->st_dev;
-    tmp.st_ino = kbuf->st_ino;
-    tmp.__st_ino = (u32)kbuf->st_ino;
-    tmp.st_mode = kbuf->st_mode;
-    tmp.st_nlink = (unsigned int)kbuf->st_nlink;
-    tmp.st_uid = kbuf->st_uid;
-    tmp.st_gid = kbuf->st_gid;
-    tmp.st_rdev = (unsigned short)kbuf->st_rdev;
-    tmp.st_size = kbuf->st_size;
-    tmp.st_blksize = (u32)kbuf->st_blksize;
-    tmp.st_blocks = (u32)kbuf->st_blocks;
-    tmp.st_atime = (u32)kbuf->st_atime;
-    tmp.st_mtime = (u32)kbuf->st_mtime;
-    tmp.st_ctime = (u32)kbuf->st_ctime;
+       memset(&tmp, 0, sizeof(tmp));
 
-    return copy_to_user(ubuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 
-}
+       tmp.st_dev = old_encode_dev(stat->dev);
+       tmp.st_ino = stat->ino;
+       tmp.__st_ino = (u32)stat->ino;
+       tmp.st_mode = stat->mode;
+       tmp.st_nlink = (unsigned int)stat->nlink;
+       tmp.uid = stat->uid;
+       tmp.gid = stat->gid;
+       tmp.st_rdev = old_encode_dev(stat->rdev);
+       tmp.st_size = stat->st_size;
+       tmp.st_blksize = (u32)stat->blksize;
+       tmp.st_blocks = (u32)stat->blocks;
+       tmp.st_atime = (u32)stat->atime.tv_sec;
+       tmp.st_mtime = (u32)stat->mtime.tv_sec;
+       tmp.st_ctime = (u32)stat->ctime.tv_sec;
 
-extern asmlinkage long sys_newstat(char * filename, struct stat * statbuf);
+       return copy_to_user(ubuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 
+}
 
 asmlinkage long sys32_stat64(char * filename, struct stat64_emu31 * statbuf, long flags)
 {
-    int ret;
-    struct stat s;
-    char * tmp;
-    int err;
-    mm_segment_t old_fs = get_fs();
-    
-    tmp = getname(filename);
-    err = PTR_ERR(tmp);
-    if (IS_ERR(tmp))   
-           return err;
-
-    set_fs (KERNEL_DS);
-    ret = sys_newstat(tmp, &s);
-    set_fs (old_fs);
-    putname(tmp);
-    if (putstat64 (statbuf, &s)) 
-           return -EFAULT;
-    return ret;
+       struct kstat stat;
+       int ret = vfs_stat(filename, &stat);
+       if (!ret)
+               ret = cp_stat64(statbuf, &stat);
+       return ret;
 }
 
-extern asmlinkage long sys_newlstat(char * filename, struct stat * statbuf);
-
 asmlinkage long sys32_lstat64(char * filename, struct stat64_emu31 * statbuf, long flags)
 {
-    int ret;
-    struct stat s;
-    char * tmp;
-    int err;
-    mm_segment_t old_fs = get_fs();
-    
-    tmp = getname(filename);
-    err = PTR_ERR(tmp);
-    if (IS_ERR(tmp))   
-           return err;
-
-    set_fs (KERNEL_DS);
-    ret = sys_newlstat(tmp, &s);
-    set_fs (old_fs);
-    putname(tmp);
-    if (putstat64 (statbuf, &s)) 
-           return -EFAULT;
-    return ret;
+       struct kstat stat;
+       int ret = vfs_lstat(filename, &stat);
+       if (!ret)
+               ret = cp_stat64(statbuf, &stat);
+       return ret;
 }
 
-extern asmlinkage long sys_newfstat(unsigned int fd, struct stat * statbuf);
-
 asmlinkage long sys32_fstat64(unsigned long fd, struct stat64_emu31 * statbuf, long flags)
 {
-    int ret;
-    struct stat s;
-    mm_segment_t old_fs = get_fs();
-    
-    set_fs (KERNEL_DS);
-    ret = sys_newfstat(fd, &s);
-    set_fs (old_fs);
-    if (putstat64 (statbuf, &s))
-           return -EFAULT;
-    return ret;
+       struct kstat stat;
+       int ret = vfs_fstat(fd, &stat);
+       if (!ret)
+               ret = cp_stat64(statbuf, &stat);
+       return ret;
 }
 
 /*
index fe64eda04546fb76bca446c32367b1e74d8c2501..1bebed9e4265d67fdba4fe26c181be050cbd66f8 100644 (file)
@@ -1307,13 +1307,13 @@ int cp_compat_stat(struct kstat *stat, struct compat_stat *statbuf)
        if (stat->size > MAX_NON_LFS)
                return -EOVERFLOW;
 
-       err  = put_user(stat->dev, &statbuf->st_dev);
+       err  = put_user(old_encode_dev(stat->dev), &statbuf->st_dev);
        err |= put_user(stat->ino, &statbuf->st_ino);
        err |= put_user(stat->mode, &statbuf->st_mode);
        err |= put_user(stat->nlink, &statbuf->st_nlink);
        err |= put_user(high2lowuid(stat->uid), &statbuf->st_uid);
        err |= put_user(high2lowgid(stat->gid), &statbuf->st_gid);
-       err |= put_user(stat->rdev, &statbuf->st_rdev);
+       err |= put_user(old_encode_dev(stat->rdev), &statbuf->st_rdev);
        err |= put_user(stat->size, &statbuf->st_size);
        err |= put_user(stat->atime.tv_sec, &statbuf->st_atime);
        err |= put_user(0, &statbuf->__unused1);
index f28b2ebcf90ab0ae813fa113e173953bb8ad330b..f2764823790845a0e97091b6cda1a5f762d2e6af 100644 (file)
 #define low2highgid(gid) ((gid) == (u16)-1) ? (gid_t)-1 : (gid_t)(gid)
 extern int overflowuid,overflowgid; 
 
-
-extern asmlinkage long sys_newstat(char * filename, struct stat * statbuf);
-extern asmlinkage long sys_newlstat(char * filename, struct stat * statbuf);
-extern asmlinkage long sys_newfstat(unsigned int fd, struct stat * statbuf);
-
-
-extern asmlinkage long sys_newstat(char * filename, struct stat * statbuf);
-extern asmlinkage long sys_newlstat(char * filename, struct stat * statbuf);
-extern asmlinkage long sys_newfstat(unsigned int fd, struct stat * statbuf);
-
-
 int cp_compat_stat(struct kstat *kbuf, struct compat_stat *ubuf)
 {
        if (verify_area(VERIFY_WRITE, ubuf, sizeof(struct compat_stat)) ||
-           __put_user (kbuf->dev, &ubuf->st_dev) ||
+           __put_user (old_encode_dev(kbuf->dev), &ubuf->st_dev) ||
            __put_user (kbuf->ino, &ubuf->st_ino) ||
            __put_user (kbuf->mode, &ubuf->st_mode) ||
            __put_user (kbuf->nlink, &ubuf->st_nlink) ||
            __put_user (kbuf->uid, &ubuf->st_uid) ||
            __put_user (kbuf->gid, &ubuf->st_gid) ||
-           __put_user (kbuf->rdev, &ubuf->st_rdev) ||
+           __put_user (old_encode_dev(kbuf->rdev), &ubuf->st_rdev) ||
            __put_user (kbuf->size, &ubuf->st_size) ||
            __put_user (kbuf->atime.tv_sec, &ubuf->st_atime) ||
            __put_user (kbuf->atime.tv_nsec, &ubuf->st_atime_nsec) ||
@@ -127,26 +116,26 @@ int cp_compat_stat(struct kstat *kbuf, struct compat_stat *ubuf)
    support for 64bit inode numbers. */
 
 static int
-putstat64(struct stat64 *ubuf, struct stat *kbuf)
+cp_stat64(struct stat64 *ubuf, struct kstat *stat)
 {
        if (verify_area(VERIFY_WRITE, ubuf, sizeof(struct stat64)) ||
-           __put_user (kbuf->st_dev, &ubuf->st_dev) ||
-           __put_user (kbuf->st_ino, &ubuf->__st_ino) ||
-           __put_user (kbuf->st_ino, &ubuf->st_ino) ||
-           __put_user (kbuf->st_mode, &ubuf->st_mode) ||
-           __put_user (kbuf->st_nlink, &ubuf->st_nlink) ||
-           __put_user (kbuf->st_uid, &ubuf->st_uid) ||
-           __put_user (kbuf->st_gid, &ubuf->st_gid) ||
-           __put_user (kbuf->st_rdev, &ubuf->st_rdev) ||
-           __put_user (kbuf->st_size, &ubuf->st_size) ||
-           __put_user (kbuf->st_atime, &ubuf->st_atime) ||
-           __put_user (kbuf->st_atime_nsec, &ubuf->st_atime_nsec) ||
-           __put_user (kbuf->st_mtime, &ubuf->st_mtime) ||
-           __put_user (kbuf->st_mtime_nsec, &ubuf->st_mtime_nsec) ||
-           __put_user (kbuf->st_ctime, &ubuf->st_ctime) ||
-           __put_user (kbuf->st_ctime_nsec, &ubuf->st_ctime_nsec) ||
-           __put_user (kbuf->st_blksize, &ubuf->st_blksize) ||
-           __put_user (kbuf->st_blocks, &ubuf->st_blocks))
+           __put_user(old_encode_dev(stat->dev), &ubuf->st_dev) ||
+           __put_user (stat->ino, &ubuf->__st_ino) ||
+           __put_user (stat->ino, &ubuf->st_ino) ||
+           __put_user (stat->mode, &ubuf->st_mode) ||
+           __put_user (stat->nlink, &ubuf->st_nlink) ||
+           __put_user (stat->uid, &ubuf->st_uid) ||
+           __put_user (stat->gid, &ubuf->st_gid) ||
+           __put_user (old_encode_dev(stat->rdev), &ubuf->st_rdev) ||
+           __put_user (stat->size, &ubuf->st_size) ||
+           __put_user (stat->atime.tv_sec, &ubuf->st_atime) ||
+           __put_user (stat->atime.tv_nsec, &ubuf->st_atime_nsec) ||
+           __put_user (stat->mtime.tv_sec, &ubuf->st_mtime) ||
+           __put_user (stat->mtime.tv_nsec, &ubuf->st_mtime_nsec) ||
+           __put_user (stat->ctime.tv_sec, &ubuf->st_ctime) ||
+           __put_user (stat->ctime.tv_nsec, &ubuf->st_ctime_nsec) ||
+           __put_user (stat->blksize, &ubuf->st_blksize) ||
+           __put_user (stat->blocks, &ubuf->st_blocks))
                return -EFAULT;
        return 0;
 }
@@ -154,50 +143,33 @@ putstat64(struct stat64 *ubuf, struct stat *kbuf)
 asmlinkage long
 sys32_stat64(char * filename, struct stat64 *statbuf)
 {
-       int ret;
-       struct stat s;
-       mm_segment_t old_fs = get_fs();
-       
-       set_fs (KERNEL_DS);
-       ret = sys_newstat(filename, &s);
-       set_fs (old_fs);
-       if (putstat64 (statbuf, &s))
-               return -EFAULT;
+       struct kstat stat;
+       int ret = vfs_stat(filename, &stat);
+       if (!ret)
+               ret = cp_stat64(statbuf, &stat);
        return ret;
 }
 
 asmlinkage long
 sys32_lstat64(char * filename, struct stat64 *statbuf)
 {
-       int ret;
-       struct stat s;
-       mm_segment_t old_fs = get_fs();
-       
-       set_fs (KERNEL_DS);
-       ret = sys_newlstat(filename, &s);
-       set_fs (old_fs);
-       if (putstat64 (statbuf, &s))
-               return -EFAULT;
+       struct kstat stat;
+       int ret = vfs_lstat(filename, &stat);
+       if (!ret)
+               ret = cp_stat64(statbuf, &stat);
        return ret;
 }
 
 asmlinkage long
 sys32_fstat64(unsigned int fd, struct stat64 *statbuf)
 {
-       int ret;
-       struct stat s;
-       mm_segment_t old_fs = get_fs();
-       
-       set_fs (KERNEL_DS);
-       ret = sys_newfstat(fd, &s);
-       set_fs (old_fs);
-       if (putstat64 (statbuf, &s))
-               return -EFAULT;
+       struct kstat stat;
+       int ret = vfs_fstat(fd, &stat);
+       if (!ret)
+               ret = cp_stat64(statbuf, &stat);
        return ret;
 }
 
-
-
 /*
  * Linux/i386 didn't use to be able to handle more than
  * 4 system call parameters, so these system calls used a memory
index a1f3d7d874fae5d96e53c9cb02089454bfd1415d..e5deeb33741c9b4b8d3997b419783e3825315983 100644 (file)
--- a/fs/stat.c
+++ b/fs/stat.c
@@ -117,13 +117,13 @@ static int cp_old_stat(struct kstat *stat, struct __old_kernel_stat __user * sta
        }
 
        memset(&tmp, 0, sizeof(struct __old_kernel_stat));
-       tmp.st_dev = stat->dev;
+       tmp.st_dev = old_encode_dev(stat->dev);
        tmp.st_ino = stat->ino;
        tmp.st_mode = stat->mode;
        tmp.st_nlink = stat->nlink;
        SET_OLDSTAT_UID(tmp, stat->uid);
        SET_OLDSTAT_GID(tmp, stat->gid);
-       tmp.st_rdev = stat->rdev;
+       tmp.st_rdev = old_encode_dev(stat->rdev);
 #if BITS_PER_LONG == 32
        if (stat->size > MAX_NON_LFS)
                return -EOVERFLOW;
@@ -173,13 +173,13 @@ static int cp_new_stat(struct kstat *stat, struct stat __user *statbuf)
        struct stat tmp;
 
        memset(&tmp, 0, sizeof(tmp));
-       tmp.st_dev = stat->dev;
+       tmp.st_dev = old_encode_dev(stat->dev);
        tmp.st_ino = stat->ino;
        tmp.st_mode = stat->mode;
        tmp.st_nlink = stat->nlink;
        SET_STAT_UID(tmp, stat->uid);
        SET_STAT_GID(tmp, stat->gid);
-       tmp.st_rdev = stat->rdev;
+       tmp.st_rdev = old_encode_dev(stat->rdev);
 #if BITS_PER_LONG == 32
        if (stat->size > MAX_NON_LFS)
                return -EOVERFLOW;
@@ -263,7 +263,7 @@ static long cp_new_stat64(struct kstat *stat, struct stat64 __user *statbuf)
        struct stat64 tmp;
 
        memset(&tmp, 0, sizeof(struct stat64));
-       tmp.st_dev = stat->dev;
+       tmp.st_dev = old_encode_dev(stat->dev);
        tmp.st_ino = stat->ino;
 #ifdef STAT64_HAS_BROKEN_ST_INO
        tmp.__st_ino = stat->ino;
@@ -272,7 +272,7 @@ static long cp_new_stat64(struct kstat *stat, struct stat64 __user *statbuf)
        tmp.st_nlink = stat->nlink;
        tmp.st_uid = stat->uid;
        tmp.st_gid = stat->gid;
-       tmp.st_rdev = stat->rdev;
+       tmp.st_rdev = old_encode_dev(stat->rdev);
        tmp.st_atime = stat->atime.tv_sec;
        tmp.st_atime_nsec = stat->atime.tv_nsec;
        tmp.st_mtime = stat->mtime.tv_sec;
index 9c613d79189deda2e2049ea65c769ecd0db14525..c78c04a94f4e3eab46b41d9ec9c514104850d40b 100644 (file)
@@ -7,7 +7,6 @@
  * assume GCC is being used.
  */
 
-typedef unsigned int   __kernel_dev_t;
 typedef unsigned int   __kernel_ino_t;
 typedef unsigned int   __kernel_mode_t;
 typedef unsigned int   __kernel_nlink_t;
index 23ad094247238a27b452d76cb2703adaf2bd9904..cdf4b69149f016c91421e3ccbebb5665c1c66146 100644 (file)
@@ -19,7 +19,6 @@
  * assume GCC is being used.
  */
 
-typedef unsigned short         __kernel_dev_t;
 typedef unsigned long          __kernel_ino_t;
 typedef unsigned short         __kernel_mode_t;
 typedef unsigned short         __kernel_nlink_t;
index 9aeff7c2cb9856eff0da528e48e5724ecef2156d..94ef6edce3e287a6bb761309a27947b6afe0a84f 100644 (file)
@@ -19,7 +19,6 @@
  * assume GCC is being used.
  */
 
-typedef unsigned short         __kernel_dev_t;
 typedef unsigned long          __kernel_ino_t;
 typedef unsigned short         __kernel_mode_t;
 typedef unsigned short         __kernel_nlink_t;
index d1c87c65261972dacd1cb67a21ca258f451ce2d0..6d26fee4a6145c4fc1e966dd087318b9d093976b 100644 (file)
@@ -14,7 +14,6 @@
  * assume GCC is being used.
  */
 
-typedef unsigned short __kernel_dev_t;
 typedef unsigned long  __kernel_ino_t;
 typedef unsigned short __kernel_mode_t;
 typedef unsigned short __kernel_nlink_t;
index 77c22770a5ba4e6de29118e09a55e3dbf594c881..7de94b1fd0e53321a8fe6dcf9f99990319afdbf5 100644 (file)
@@ -7,7 +7,6 @@
  * assume GCC is being used.
  */
 
-typedef unsigned short __kernel_dev_t;
 typedef unsigned long  __kernel_ino_t;
 typedef unsigned short __kernel_mode_t;
 typedef unsigned short __kernel_nlink_t;
index d391865fd502e5f78d65cd5a893267af8a1dbef7..4e47ed059ad66af1de35611842b95c9bc814c26e 100644 (file)
@@ -7,7 +7,6 @@
  * assume GCC is being used.
  */
 
-typedef unsigned short __kernel_dev_t;
 typedef unsigned long  __kernel_ino_t;
 typedef unsigned short __kernel_mode_t;
 typedef unsigned short __kernel_nlink_t;
index 50db61f1846943cf8cb3239168470688b48b99fd..59a50b0e4e38202c20088b629e7ad2ec986c6b8d 100644 (file)
@@ -10,7 +10,6 @@
  *     David Mosberger-Tang <davidm@hpl.hp.com>
  */
 
-typedef unsigned int   __kernel_dev_t;
 typedef unsigned int   __kernel_ino_t;
 typedef unsigned int   __kernel_mode_t;
 typedef unsigned int   __kernel_nlink_t;
index d10b7bb9cb9eecff3b5d7fd45acdaee99cb739ce..fa166ee30286fdca3cb2488a8b8586527fe0d455 100644 (file)
@@ -7,7 +7,6 @@
  * assume GCC is being used.
  */
 
-typedef unsigned short __kernel_dev_t;
 typedef unsigned long  __kernel_ino_t;
 typedef unsigned short __kernel_mode_t;
 typedef unsigned short __kernel_nlink_t;
index 8fce1f864ce463294964b602fb9d06c029de9e3a..9ec09821c5fdcbc1f86ef45a6e109e3f2facbb6a 100644 (file)
@@ -17,7 +17,6 @@
  * assume GCC is being used.
  */
 
-typedef unsigned int   __kernel_dev_t;
 typedef unsigned long  __kernel_ino_t;
 typedef unsigned int   __kernel_mode_t;
 #if (_MIPS_SZLONG == 32)
index 53ce689129a04c1853e3efc3ac11a9e3412e27ea..6e00f751ab6dc675b886d736e1f0c814136cfbd4 100644 (file)
 #if (_MIPS_SIM == _MIPS_SIM_ABI32) || (_MIPS_SIM == _MIPS_SIM_NABI32)
 
 struct stat {
-       dev_t           st_dev;
+       unsigned        st_dev;
        long            st_pad1[3];             /* Reserved for network id */
        ino_t           st_ino;
        mode_t          st_mode;
        nlink_t         st_nlink;
        uid_t           st_uid;
        gid_t           st_gid;
-       dev_t           st_rdev;
+       unsigned        st_rdev;
        long            st_pad2[2];
        off_t           st_size;
        long            st_pad3;
@@ -90,7 +90,7 @@ struct stat64 {
 
 /* The memory layout is the same as of struct stat64 of the 32-bit kernel.  */
 struct stat {
-       dev_t                   st_dev;
+       unsigned int            st_dev;
        unsigned int            st_pad0[3]; /* Reserved for st_dev expansion */
 
        unsigned long           st_ino;
@@ -101,7 +101,7 @@ struct stat {
        uid_t                   st_uid;
        gid_t                   st_gid;
 
-       dev_t                   st_rdev;
+       unsigned int            st_rdev;
        unsigned int            st_pad1[3]; /* Reserved for st_rdev expansion */
 
        off_t                   st_size;
index 6d241ab7ed1928dbc352dd238b694d97930dce5c..dc91ca54b78f8bfd9dd9e594a9d9eaadc151d365 100644 (file)
@@ -6,7 +6,6 @@
  * be a little careful about namespace pollution etc.  Also, we cannot
  * assume GCC is being used.
  */
-typedef unsigned int           __kernel_dev_t;
 typedef unsigned long          __kernel_ino_t;
 typedef unsigned short         __kernel_mode_t;
 typedef unsigned short         __kernel_nlink_t;
index bfb286a02f3cb15857e18dd98c661a3774be04a2..9d5fbbc5c31f14df4791b1005e83ade0cd0505f4 100644 (file)
@@ -4,13 +4,13 @@
 #include <linux/types.h>
 
 struct stat {
-       dev_t           st_dev;         /* dev_t is 32 bits on parisc */
+       unsigned int    st_dev;         /* dev_t is 32 bits on parisc */
        ino_t           st_ino;         /* 32 bits */
        mode_t          st_mode;        /* 16 bits */
        nlink_t         st_nlink;       /* 16 bits */
        unsigned short  st_reserved1;   /* old st_uid */
        unsigned short  st_reserved2;   /* old st_gid */
-       dev_t           st_rdev;
+       unsigned int    st_rdev;
        off_t           st_size;
        time_t          st_atime;
        unsigned int    st_atime_nsec;
@@ -21,12 +21,12 @@ struct stat {
        int             st_blksize;
        int             st_blocks;
        unsigned int    __unused1;      /* ACL stuff */
-       dev_t           __unused2;      /* network */
+       unsigned int    __unused2;      /* network */
        ino_t           __unused3;      /* network */
        unsigned int    __unused4;      /* cnodes */
        unsigned short  __unused5;      /* netsite */
        short           st_fstype;
-       dev_t           st_realdev;
+       unsigned int    st_realdev;
        unsigned short  st_basemode;
        unsigned short  st_spareshort;
        uid_t           st_uid;
@@ -39,13 +39,13 @@ struct stat {
 typedef __kernel_off64_t       off64_t;
 
 struct hpux_stat64 {
-       dev_t           st_dev;         /* dev_t is 32 bits on parisc */
+       unsigned int    st_dev;         /* dev_t is 32 bits on parisc */
        ino_t           st_ino;         /* 32 bits */
        mode_t          st_mode;        /* 16 bits */
        nlink_t         st_nlink;       /* 16 bits */
        unsigned short  st_reserved1;   /* old st_uid */
        unsigned short  st_reserved2;   /* old st_gid */
-       dev_t           st_rdev;
+       unsigned int    st_rdev;
        off64_t         st_size;
        time_t          st_atime;
        unsigned int    st_spare1;
@@ -56,12 +56,12 @@ struct hpux_stat64 {
        int             st_blksize;
        __u64           st_blocks;
        unsigned int    __unused1;      /* ACL stuff */
-       dev_t           __unused2;      /* network */
+       unsigned int    __unused2;      /* network */
        ino_t           __unused3;      /* network */
        unsigned int    __unused4;      /* cnodes */
        unsigned short  __unused5;      /* netsite */
        short           st_fstype;
-       dev_t           st_realdev;
+       unsigned int    st_realdev;
        unsigned short  st_basemode;
        unsigned short  st_spareshort;
        uid_t           st_uid;
index 537bee4d8eee23a8c6c8502a4182c914f39242c5..a14a82abe8d2bec37fa7acbd6193cb91347c2bef 100644 (file)
@@ -7,7 +7,6 @@
  * assume GCC is being used.
  */
 
-typedef unsigned int   __kernel_dev_t;
 typedef unsigned long  __kernel_ino_t;
 typedef unsigned int   __kernel_mode_t;
 typedef unsigned short __kernel_nlink_t;
index 12b48c8cb880ffef774a911af5cfff2f7422bb93..cadb34298496b2b2e2e0932e79f390a5a2b5a238 100644 (file)
@@ -22,13 +22,13 @@ struct __old_kernel_stat {
 #define STAT_HAVE_NSEC 1
 
 struct stat {
-       dev_t           st_dev;
+       unsigned        st_dev;
        ino_t           st_ino;
        mode_t          st_mode;
        nlink_t         st_nlink;
        uid_t           st_uid;
        gid_t           st_gid;
-       dev_t           st_rdev;
+       unsigned        st_rdev;
        off_t           st_size;
        unsigned long   st_blksize;
        unsigned long   st_blocks;
index c3cff412a3ebf08b8d3c0a622627e99150f57551..ff8ba3a73050599134f10ba24cc642226c3d5b7d 100644 (file)
@@ -12,7 +12,6 @@
  * 2 of the License, or (at your option) any later version.
  */
 
-typedef unsigned long  __kernel_dev_t;
 typedef unsigned long  __kernel_ino_t;
 typedef unsigned long          __kernel_nlink_t;
 typedef unsigned int   __kernel_mode_t;
index 51625e24830c35edb693112a89b9b1b8d384c13e..973a5f97951db1e70789190f7fb2e3bf1afb7299 100644 (file)
 #include <linux/types.h>
 
 struct stat {
-       dev_t           st_dev;
+       unsigned long   st_dev;
        ino_t           st_ino;
        nlink_t         st_nlink;
        mode_t          st_mode;
        uid_t           st_uid;
        gid_t           st_gid;
-       dev_t           st_rdev;
+       unsigned long   st_rdev;
        off_t           st_size;
        unsigned long   st_blksize;
        unsigned long   st_blocks;
index 0d97ef9ee8462f06aea7dd94cc3352898370584b..a6ac95dc9576574d9ea3008b16ace16b8ec2312d 100644 (file)
@@ -34,7 +34,6 @@ typedef long long       __kernel_loff_t;
 
 #ifndef __s390x__
 
-typedef unsigned short  __kernel_dev_t;
 typedef unsigned long   __kernel_ino_t;
 typedef unsigned short  __kernel_mode_t;
 typedef unsigned short  __kernel_nlink_t;
@@ -51,7 +50,6 @@ typedef unsigned short        __kernel_old_dev_t;
 
 #else /* __s390x__ */
 
-typedef unsigned int    __kernel_dev_t;
 typedef unsigned int    __kernel_ino_t;
 typedef unsigned int    __kernel_mode_t;
 typedef unsigned int    __kernel_nlink_t;
index 7d0cd1b36d67774041ef295074059cfe0786830a..0a3d2f54ab2735af2751946a1702de11b7e9b113 100644 (file)
@@ -7,7 +7,6 @@
  * assume GCC is being used.
  */
 
-typedef unsigned short __kernel_dev_t;
 typedef unsigned long  __kernel_ino_t;
 typedef unsigned short __kernel_mode_t;
 typedef unsigned short __kernel_nlink_t;
index b4731a3c12a4ee223b9a53b8f75e03f01a98b47d..9ef1b3db4cbf4c87f67d744b8ee69f80f1c17941 100644 (file)
@@ -17,7 +17,6 @@ typedef int                    __kernel_pid_t;
 typedef unsigned short         __kernel_ipc_pid_t;
 typedef unsigned short         __kernel_uid_t;
 typedef unsigned short         __kernel_gid_t;
-typedef unsigned short         __kernel_dev_t;
 typedef unsigned long          __kernel_ino_t;
 typedef unsigned short         __kernel_mode_t;
 typedef unsigned short         __kernel_umode_t;
index 9341bb220fd8afb70656f4ec61812c340fbdb0d0..133444385364bda5f1b2447a58ab169f4b204b4d 100644 (file)
@@ -16,7 +16,6 @@ typedef int                    __kernel_pid_t;
 typedef int                    __kernel_ipc_pid_t;
 typedef unsigned int           __kernel_uid_t;
 typedef unsigned int           __kernel_gid_t;
-typedef unsigned int           __kernel_dev_t;
 typedef unsigned long          __kernel_ino_t;
 typedef unsigned int           __kernel_mode_t;
 typedef unsigned short         __kernel_umode_t;
index fedc7885aa8f3d43f2e448dffa63e84ba08f3234..48e06618a5a440112d768f2f054962c6bd172ba1 100644 (file)
@@ -5,13 +5,13 @@
 #include <linux/types.h>
 
 struct stat {
-       dev_t   st_dev;
+       unsigned   st_dev;
        ino_t   st_ino;
        mode_t  st_mode;
        short   st_nlink;
        uid_t   st_uid;
        gid_t   st_gid;
-       dev_t   st_rdev;
+       unsigned   st_rdev;
        off_t   st_size;
        time_t  st_atime;
        time_t  st_mtime;
index 4f2f0d8eefeabe60c297f90787d10f1ce2e8d28b..865c87cadc2bfee0578c80a7e57cec8c1b36e627 100644 (file)
@@ -14,7 +14,6 @@
 #ifndef __V850_POSIX_TYPES_H__
 #define __V850_POSIX_TYPES_H__
 
-typedef unsigned int   __kernel_dev_t;
 typedef unsigned long  __kernel_ino_t;
 typedef unsigned long long __kernel_ino64_t;
 typedef unsigned int   __kernel_mode_t;
index 33a1dccf45dab7c63d29e099f0157d2fcf79512e..b28ed4955fa3e04ea24fa18ee024d874fcc956ae 100644 (file)
@@ -7,7 +7,6 @@
  * assume GCC is being used.
  */
 
-typedef unsigned long  __kernel_dev_t;
 typedef unsigned long  __kernel_ino_t;
 typedef unsigned int   __kernel_mode_t;
 typedef unsigned long  __kernel_nlink_t;
index 21bef9ec14b02ae99166129c5a3de56760754028..8a20b91c0e459f4a6d051899fe3d4c0e17137243 100644 (file)
@@ -50,7 +50,7 @@ struct dm_ioctl {
        uint32_t open_count;    /* out */
        uint32_t flags;         /* in/out */
 
-       __kernel_dev_t dev;     /* in/out */
+       __kernel_old_dev_t dev; /* in/out */
 
        char name[DM_NAME_LEN]; /* device name */
        char uuid[DM_UUID_LEN]; /* unique identifier for
@@ -87,7 +87,7 @@ struct dm_target_spec {
 struct dm_target_deps {
        uint32_t count;
 
-       __kernel_dev_t dev[0];  /* out */
+       __kernel_old_dev_t dev[0];      /* out */
 };
 
 /*
index 87a71f8f2416850e83ca19a80c0344cd747f44e7..e3a3d8b1b6bbf3f0a0962943c3121af635974fdc 100644 (file)
@@ -17,6 +17,8 @@
 
 #ifndef __KERNEL_STRICT_NAMES
 
+typedef __u16 __kernel_dev_t;
+
 typedef __kernel_fd_set                fd_set;
 typedef __kernel_dev_t         dev_t;
 typedef __kernel_ino_t         ino_t;