Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (37 commits) fs: avoid I_NEW inodes Merge code for single and multiple-instance mounts Remove get_init_pts_sb() Move common mknod_ptmx() calls into caller Parse mount options just once and copy them to super block Unroll essentials of do_remount_sb() into devpts vfs: simple_set_mnt() should return void fs: move bdev code out of buffer.c constify dentry_operations: rest constify dentry_operations: configfs constify dentry_operations: sysfs constify dentry_operations: JFS constify dentry_operations: OCFS2 constify dentry_operations: GFS2 constify dentry_operations: FAT constify dentry_operations: FUSE constify dentry_operations: procfs constify dentry_operations: ecryptfs constify dentry_operations: CIFS constify dentry_operations: AFS ...
This commit is contained in:
28
fs/compat.c
28
fs/compat.c
@@ -378,6 +378,34 @@ out:
|
||||
return error;
|
||||
}
|
||||
|
||||
/*
|
||||
* This is a copy of sys_ustat, just dealing with a structure layout.
|
||||
* Given how simple this syscall is that apporach is more maintainable
|
||||
* than the various conversion hacks.
|
||||
*/
|
||||
asmlinkage long compat_sys_ustat(unsigned dev, struct compat_ustat __user *u)
|
||||
{
|
||||
struct super_block *sb;
|
||||
struct compat_ustat tmp;
|
||||
struct kstatfs sbuf;
|
||||
int err;
|
||||
|
||||
sb = user_get_super(new_decode_dev(dev));
|
||||
if (!sb)
|
||||
return -EINVAL;
|
||||
err = vfs_statfs(sb->s_root, &sbuf);
|
||||
drop_super(sb);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
memset(&tmp, 0, sizeof(struct compat_ustat));
|
||||
tmp.f_tfree = sbuf.f_bfree;
|
||||
tmp.f_tinode = sbuf.f_ffree;
|
||||
if (copy_to_user(u, &tmp, sizeof(struct compat_ustat)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int get_compat_flock(struct flock *kfl, struct compat_flock __user *ufl)
|
||||
{
|
||||
if (!access_ok(VERIFY_READ, ufl, sizeof(*ufl)) ||
|
||||
|
Reference in New Issue
Block a user