Commit 18d0c6d3 authored by Alexander Viro's avatar Alexander Viro Committed by Linus Torvalds

[PATCH] prepare for 32-bit dev_t: stat()

	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.
parent 66c937f3
......@@ -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);
......
......@@ -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;
......
......@@ -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;
......
......@@ -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);
......
......@@ -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);
......
......@@ -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,92 +2567,54 @@ 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;
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;
return copy_to_user(ubuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
}
extern asmlinkage long sys_newstat(char * filename, struct stat * statbuf);
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;
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;
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;
struct kstat stat;
int ret = vfs_fstat(fd, &stat);
if (!ret)
ret = cp_stat64(statbuf, &stat);
return ret;
}
......
......@@ -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);
......
......@@ -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, 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
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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)
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -11,13 +11,13 @@
#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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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 */
};
/*
......
......@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment