arch/ia64/ia32/sys_ia32.c | 8 +- arch/mips/kernel/linux32.c | 4 - arch/parisc/hpux/fs.c | 4 - arch/parisc/kernel/sys_parisc32.c | 4 - arch/ppc64/kernel/sys_ppc32.c | 4 - arch/s390/kernel/compat_linux.c | 118 ++++++++++++-------------------------- arch/sparc64/kernel/sys_sparc32.c | 4 - arch/x86_64/ia32/sys_ia32.c | 92 ++++++++++------------------- fs/stat.c | 12 +-- include/asm-alpha/posix_types.h | 1 include/asm-arm/posix_types.h | 1 include/asm-arm26/posix_types.h | 1 include/asm-cris/posix_types.h | 1 include/asm-h8300/posix_types.h | 1 include/asm-i386/posix_types.h | 1 include/asm-ia64/posix_types.h | 1 include/asm-m68k/posix_types.h | 1 include/asm-mips/posix_types.h | 1 include/asm-mips/stat.h | 8 +- include/asm-parisc/posix_types.h | 1 include/asm-parisc/stat.h | 16 ++--- include/asm-ppc/posix_types.h | 1 include/asm-ppc/stat.h | 4 - include/asm-ppc64/posix_types.h | 1 include/asm-ppc64/stat.h | 4 - include/asm-s390/posix_types.h | 2 include/asm-sh/posix_types.h | 1 include/asm-sparc/posix_types.h | 1 include/asm-sparc64/posix_types.h | 1 include/asm-sparc64/stat.h | 4 - include/asm-v850/posix_types.h | 1 include/asm-x86_64/posix_types.h | 1 include/linux/dm-ioctl-v1.h | 4 - include/linux/types.h | 2 34 files changed, 113 insertions(+), 198 deletions(-) diff -puN arch/ia64/ia32/sys_ia32.c~KD41-stat-B5 arch/ia64/ia32/sys_ia32.c --- 25/arch/ia64/ia32/sys_ia32.c~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/arch/ia64/ia32/sys_ia32.c 2003-09-21 22:35:24.000000000 -0700 @@ -186,13 +186,13 @@ int cp_compat_stat(struct kstat *stat, s 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 k 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 k 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); diff -puN arch/mips/kernel/linux32.c~KD41-stat-B5 arch/mips/kernel/linux32.c --- 25/arch/mips/kernel/linux32.c~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/arch/mips/kernel/linux32.c 2003-09-21 22:35:24.000000000 -0700 @@ -72,13 +72,13 @@ int cp_compat_stat(struct kstat *stat, s 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; diff -puN arch/parisc/hpux/fs.c~KD41-stat-B5 arch/parisc/hpux/fs.c --- 25/arch/parisc/hpux/fs.c~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/arch/parisc/hpux/fs.c 2003-09-21 22:35:24.000000000 -0700 @@ -124,13 +124,13 @@ static int cp_hpux_stat(struct kstat *st 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; diff -puN arch/parisc/kernel/sys_parisc32.c~KD41-stat-B5 arch/parisc/kernel/sys_parisc32.c --- 25/arch/parisc/kernel/sys_parisc32.c~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/arch/parisc/kernel/sys_parisc32.c 2003-09-21 22:35:24.000000000 -0700 @@ -442,13 +442,13 @@ int cp_compat_stat(struct kstat *stat, s 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); diff -puN arch/ppc64/kernel/sys_ppc32.c~KD41-stat-B5 arch/ppc64/kernel/sys_ppc32.c --- 25/arch/ppc64/kernel/sys_ppc32.c~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/arch/ppc64/kernel/sys_ppc32.c 2003-09-21 22:35:24.000000000 -0700 @@ -751,13 +751,13 @@ int cp_compat_stat(struct kstat *stat, s 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); diff -puN arch/s390/kernel/compat_linux.c~KD41-stat-B5 arch/s390/kernel/compat_linux.c --- 25/arch/s390/kernel/compat_linux.c~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/arch/s390/kernel/compat_linux.c 2003-09-21 22:35:24.000000000 -0700 @@ -1316,13 +1316,13 @@ int cp_compat_stat(struct kstat *stat, s { 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(stru } 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)); - - 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; + struct stat64_emu31 tmp; - return copy_to_user(ubuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; -} + memset(&tmp, 0, sizeof(tmp)); + + 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; } /* diff -puN arch/sparc64/kernel/sys_sparc32.c~KD41-stat-B5 arch/sparc64/kernel/sys_sparc32.c --- 25/arch/sparc64/kernel/sys_sparc32.c~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/arch/sparc64/kernel/sys_sparc32.c 2003-09-21 22:35:24.000000000 -0700 @@ -1307,13 +1307,13 @@ int cp_compat_stat(struct kstat *stat, s 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); diff -puN arch/x86_64/ia32/sys_ia32.c~KD41-stat-B5 arch/x86_64/ia32/sys_ia32.c --- 25/arch/x86_64/ia32/sys_ia32.c~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/arch/x86_64/ia32/sys_ia32.c 2003-09-21 22:35:24.000000000 -0700 @@ -89,27 +89,16 @@ #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, s 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 st 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 diff -puN fs/stat.c~KD41-stat-B5 fs/stat.c --- 25/fs/stat.c~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/fs/stat.c 2003-09-21 22:35:24.000000000 -0700 @@ -117,13 +117,13 @@ static int cp_old_stat(struct kstat *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 *sta 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 * 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 * 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; diff -puN include/asm-alpha/posix_types.h~KD41-stat-B5 include/asm-alpha/posix_types.h --- 25/include/asm-alpha/posix_types.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-alpha/posix_types.h 2003-09-21 22:35:24.000000000 -0700 @@ -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; diff -puN include/asm-arm26/posix_types.h~KD41-stat-B5 include/asm-arm26/posix_types.h --- 25/include/asm-arm26/posix_types.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-arm26/posix_types.h 2003-09-21 22:35:24.000000000 -0700 @@ -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; diff -puN include/asm-arm/posix_types.h~KD41-stat-B5 include/asm-arm/posix_types.h --- 25/include/asm-arm/posix_types.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-arm/posix_types.h 2003-09-21 22:35:24.000000000 -0700 @@ -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; diff -puN include/asm-cris/posix_types.h~KD41-stat-B5 include/asm-cris/posix_types.h --- 25/include/asm-cris/posix_types.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-cris/posix_types.h 2003-09-21 22:35:24.000000000 -0700 @@ -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; diff -puN include/asm-h8300/posix_types.h~KD41-stat-B5 include/asm-h8300/posix_types.h --- 25/include/asm-h8300/posix_types.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-h8300/posix_types.h 2003-09-21 22:35:24.000000000 -0700 @@ -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; diff -puN include/asm-i386/posix_types.h~KD41-stat-B5 include/asm-i386/posix_types.h --- 25/include/asm-i386/posix_types.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-i386/posix_types.h 2003-09-21 22:35:24.000000000 -0700 @@ -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; diff -puN include/asm-ia64/posix_types.h~KD41-stat-B5 include/asm-ia64/posix_types.h --- 25/include/asm-ia64/posix_types.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-ia64/posix_types.h 2003-09-21 22:35:24.000000000 -0700 @@ -10,7 +10,6 @@ * David Mosberger-Tang */ -typedef unsigned int __kernel_dev_t; typedef unsigned int __kernel_ino_t; typedef unsigned int __kernel_mode_t; typedef unsigned int __kernel_nlink_t; diff -puN include/asm-m68k/posix_types.h~KD41-stat-B5 include/asm-m68k/posix_types.h --- 25/include/asm-m68k/posix_types.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-m68k/posix_types.h 2003-09-21 22:35:24.000000000 -0700 @@ -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; diff -puN include/asm-mips/posix_types.h~KD41-stat-B5 include/asm-mips/posix_types.h --- 25/include/asm-mips/posix_types.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-mips/posix_types.h 2003-09-21 22:35:24.000000000 -0700 @@ -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) diff -puN include/asm-mips/stat.h~KD41-stat-B5 include/asm-mips/stat.h --- 25/include/asm-mips/stat.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-mips/stat.h 2003-09-21 22:35:24.000000000 -0700 @@ -16,14 +16,14 @@ #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; diff -puN include/asm-parisc/posix_types.h~KD41-stat-B5 include/asm-parisc/posix_types.h --- 25/include/asm-parisc/posix_types.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-parisc/posix_types.h 2003-09-21 22:35:24.000000000 -0700 @@ -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; diff -puN include/asm-parisc/stat.h~KD41-stat-B5 include/asm-parisc/stat.h --- 25/include/asm-parisc/stat.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-parisc/stat.h 2003-09-21 22:35:24.000000000 -0700 @@ -4,13 +4,13 @@ #include 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; diff -puN include/asm-ppc64/posix_types.h~KD41-stat-B5 include/asm-ppc64/posix_types.h --- 25/include/asm-ppc64/posix_types.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-ppc64/posix_types.h 2003-09-21 22:35:24.000000000 -0700 @@ -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; diff -puN include/asm-ppc64/stat.h~KD41-stat-B5 include/asm-ppc64/stat.h --- 25/include/asm-ppc64/stat.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-ppc64/stat.h 2003-09-21 22:35:24.000000000 -0700 @@ -11,13 +11,13 @@ #include 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; diff -puN include/asm-ppc/posix_types.h~KD41-stat-B5 include/asm-ppc/posix_types.h --- 25/include/asm-ppc/posix_types.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-ppc/posix_types.h 2003-09-21 22:35:24.000000000 -0700 @@ -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; diff -puN include/asm-ppc/stat.h~KD41-stat-B5 include/asm-ppc/stat.h --- 25/include/asm-ppc/stat.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-ppc/stat.h 2003-09-21 22:35:24.000000000 -0700 @@ -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; diff -puN include/asm-s390/posix_types.h~KD41-stat-B5 include/asm-s390/posix_types.h --- 25/include/asm-s390/posix_types.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-s390/posix_types.h 2003-09-21 22:35:24.000000000 -0700 @@ -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_ #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; diff -puN include/asm-sh/posix_types.h~KD41-stat-B5 include/asm-sh/posix_types.h --- 25/include/asm-sh/posix_types.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-sh/posix_types.h 2003-09-21 22:35:24.000000000 -0700 @@ -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; diff -puN include/asm-sparc64/posix_types.h~KD41-stat-B5 include/asm-sparc64/posix_types.h --- 25/include/asm-sparc64/posix_types.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-sparc64/posix_types.h 2003-09-21 22:35:24.000000000 -0700 @@ -16,7 +16,6 @@ typedef int __kernel_ 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; diff -puN include/asm-sparc64/stat.h~KD41-stat-B5 include/asm-sparc64/stat.h --- 25/include/asm-sparc64/stat.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-sparc64/stat.h 2003-09-21 22:35:24.000000000 -0700 @@ -5,13 +5,13 @@ #include 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; diff -puN include/asm-sparc/posix_types.h~KD41-stat-B5 include/asm-sparc/posix_types.h --- 25/include/asm-sparc/posix_types.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-sparc/posix_types.h 2003-09-21 22:35:24.000000000 -0700 @@ -17,7 +17,6 @@ typedef int __kernel_ 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; diff -puN include/asm-v850/posix_types.h~KD41-stat-B5 include/asm-v850/posix_types.h --- 25/include/asm-v850/posix_types.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-v850/posix_types.h 2003-09-21 22:35:24.000000000 -0700 @@ -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; diff -puN include/asm-x86_64/posix_types.h~KD41-stat-B5 include/asm-x86_64/posix_types.h --- 25/include/asm-x86_64/posix_types.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/asm-x86_64/posix_types.h 2003-09-21 22:35:24.000000000 -0700 @@ -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; diff -puN include/linux/dm-ioctl-v1.h~KD41-stat-B5 include/linux/dm-ioctl-v1.h --- 25/include/linux/dm-ioctl-v1.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/linux/dm-ioctl-v1.h 2003-09-21 22:35:24.000000000 -0700 @@ -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 */ }; /* diff -puN include/linux/types.h~KD41-stat-B5 include/linux/types.h --- 25/include/linux/types.h~KD41-stat-B5 2003-09-21 22:35:24.000000000 -0700 +++ 25-akpm/include/linux/types.h 2003-09-21 22:35:24.000000000 -0700 @@ -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; _