git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 1.9.5.x5
[linux-2.6.git]
/
fs
/
stat.c
diff --git
a/fs/stat.c
b/fs/stat.c
index
7816772
..
f180a64
100644
(file)
--- a/
fs/stat.c
+++ b/
fs/stat.c
@@
-14,8
+14,10
@@
#include <linux/fs.h>
#include <linux/namei.h>
#include <linux/security.h>
#include <linux/fs.h>
#include <linux/namei.h>
#include <linux/security.h>
+#include <linux/syscalls.h>
#include <asm/uaccess.h>
#include <asm/uaccess.h>
+#include <asm/unistd.h>
void generic_fillattr(struct inode *inode, struct kstat *stat)
{
void generic_fillattr(struct inode *inode, struct kstat *stat)
{
@@
-25,6
+27,7
@@
void generic_fillattr(struct inode *inode, struct kstat *stat)
stat->nlink = inode->i_nlink;
stat->uid = inode->i_uid;
stat->gid = inode->i_gid;
stat->nlink = inode->i_nlink;
stat->uid = inode->i_uid;
stat->gid = inode->i_gid;
+ stat->xid = inode->i_xid;
stat->rdev = inode->i_rdev;
stat->atime = inode->i_atime;
stat->mtime = inode->i_mtime;
stat->rdev = inode->i_rdev;
stat->atime = inode->i_atime;
stat->mtime = inode->i_mtime;
@@
-105,10
+108,7
@@
int vfs_fstat(unsigned int fd, struct kstat *stat)
EXPORT_SYMBOL(vfs_fstat);
EXPORT_SYMBOL(vfs_fstat);
-#if !defined(__alpha__) && !defined(__sparc__) && !defined(__ia64__) \
- && !defined(CONFIG_ARCH_S390) && !defined(__hppa__) \
- && !defined(__arm__) && !defined(CONFIG_V850) && !defined(__powerpc64__) \
- && !defined(__mips__)
+#ifdef __ARCH_WANT_OLD_STAT
/*
* For backward compatibility? Maybe this should be moved
/*
* For backward compatibility? Maybe this should be moved
@@
-133,6
+133,8
@@
static int cp_old_stat(struct kstat *stat, struct __old_kernel_stat __user * sta
tmp.st_ino = stat->ino;
tmp.st_mode = stat->mode;
tmp.st_nlink = stat->nlink;
tmp.st_ino = stat->ino;
tmp.st_mode = stat->mode;
tmp.st_nlink = stat->nlink;
+ if (tmp.st_nlink != stat->nlink)
+ return -EOVERFLOW;
SET_UID(tmp.st_uid, stat->uid);
SET_GID(tmp.st_gid, stat->gid);
tmp.st_rdev = old_encode_dev(stat->rdev);
SET_UID(tmp.st_uid, stat->uid);
SET_GID(tmp.st_gid, stat->gid);
tmp.st_rdev = old_encode_dev(stat->rdev);
@@
-178,7
+180,7
@@
asmlinkage long sys_fstat(unsigned int fd, struct __old_kernel_stat __user * sta
return error;
}
return error;
}
-#endif
+#endif
/* __ARCH_WANT_OLD_STAT */
static int cp_new_stat(struct kstat *stat, struct stat __user *statbuf)
{
static int cp_new_stat(struct kstat *stat, struct stat __user *statbuf)
{
@@
-201,6
+203,8
@@
static int cp_new_stat(struct kstat *stat, struct stat __user *statbuf)
tmp.st_ino = stat->ino;
tmp.st_mode = stat->mode;
tmp.st_nlink = stat->nlink;
tmp.st_ino = stat->ino;
tmp.st_mode = stat->mode;
tmp.st_nlink = stat->nlink;
+ if (tmp.st_nlink != stat->nlink)
+ return -EOVERFLOW;
SET_UID(tmp.st_uid, stat->uid);
SET_GID(tmp.st_gid, stat->gid);
#if BITS_PER_LONG == 32
SET_UID(tmp.st_uid, stat->uid);
SET_GID(tmp.st_gid, stat->gid);
#if BITS_PER_LONG == 32
@@
-284,7
+288,7
@@
asmlinkage long sys_readlink(const char __user * path, char __user * buf, int bu
/* ---------- LFS-64 ----------- */
/* ---------- LFS-64 ----------- */
-#if
!defined(__ia64__) && !defined(__mips64) && !defined(__x86_64__) && !defined(CONFIG_ARCH_S390X)
+#if
def __ARCH_WANT_STAT64
static long cp_new_stat64(struct kstat *stat, struct stat64 __user *statbuf)
{
static long cp_new_stat64(struct kstat *stat, struct stat64 __user *statbuf)
{
@@
-352,7
+356,7
@@
asmlinkage long sys_fstat64(unsigned long fd, struct stat64 __user * statbuf)
return error;
}
return error;
}
-#endif /*
LFS-
64 */
+#endif /*
__ARCH_WANT_STAT
64 */
void inode_add_bytes(struct inode *inode, loff_t bytes)
{
void inode_add_bytes(struct inode *inode, loff_t bytes)
{