diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-05-11 12:59:32 +0200 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-05-11 12:59:37 +0200 | 
| commit | 7961386fe9596e6bf03d09948a73c5df9653325b (patch) | |
| tree | 60fa2586a0d340ef8f7473956eef17430d8250c7 /fs/btrfs/ioctl.c | |
| parent | aa47b7e0f89b9998dad4d1667447e8cb7703ff4e (diff) | |
| parent | 091bf7624d1c90cec9e578a18529f615213ff847 (diff) | |
| download | olio-linux-3.10-7961386fe9596e6bf03d09948a73c5df9653325b.tar.xz olio-linux-3.10-7961386fe9596e6bf03d09948a73c5df9653325b.zip  | |
Merge commit 'v2.6.30-rc5' into sched/core
Merge reason: sched/core was on .30-rc1 before, update to latest fixes
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'fs/btrfs/ioctl.c')
| -rw-r--r-- | fs/btrfs/ioctl.c | 58 | 
1 files changed, 18 insertions, 40 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 7594bec1be1..5e94ea6e1cb 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -461,15 +461,9 @@ static int btrfs_ioctl_resize(struct btrfs_root *root, void __user *arg)  	if (!capable(CAP_SYS_ADMIN))  		return -EPERM; -	vol_args = kmalloc(sizeof(*vol_args), GFP_NOFS); - -	if (!vol_args) -		return -ENOMEM; - -	if (copy_from_user(vol_args, arg, sizeof(*vol_args))) { -		ret = -EFAULT; -		goto out; -	} +	vol_args = memdup_user(arg, sizeof(*vol_args)); +	if (IS_ERR(vol_args)) +		return PTR_ERR(vol_args);  	vol_args->name[BTRFS_PATH_NAME_MAX] = '\0';  	namelen = strlen(vol_args->name); @@ -483,11 +477,13 @@ static int btrfs_ioctl_resize(struct btrfs_root *root, void __user *arg)  		*devstr = '\0';  		devstr = vol_args->name;  		devid = simple_strtoull(devstr, &end, 10); -		printk(KERN_INFO "resizing devid %llu\n", devid); +		printk(KERN_INFO "resizing devid %llu\n", +		       (unsigned long long)devid);  	}  	device = btrfs_find_device(root, devid, NULL, NULL);  	if (!device) { -		printk(KERN_INFO "resizer unable to find device %llu\n", devid); +		printk(KERN_INFO "resizer unable to find device %llu\n", +		       (unsigned long long)devid);  		ret = -EINVAL;  		goto out_unlock;  	} @@ -545,7 +541,6 @@ static int btrfs_ioctl_resize(struct btrfs_root *root, void __user *arg)  out_unlock:  	mutex_unlock(&root->fs_info->volume_mutex); -out:  	kfree(vol_args);  	return ret;  } @@ -565,15 +560,9 @@ static noinline int btrfs_ioctl_snap_create(struct file *file,  	if (root->fs_info->sb->s_flags & MS_RDONLY)  		return -EROFS; -	vol_args = kmalloc(sizeof(*vol_args), GFP_NOFS); - -	if (!vol_args) -		return -ENOMEM; - -	if (copy_from_user(vol_args, arg, sizeof(*vol_args))) { -		ret = -EFAULT; -		goto out; -	} +	vol_args = memdup_user(arg, sizeof(*vol_args)); +	if (IS_ERR(vol_args)) +		return PTR_ERR(vol_args);  	vol_args->name[BTRFS_PATH_NAME_MAX] = '\0';  	namelen = strlen(vol_args->name); @@ -675,19 +664,13 @@ static long btrfs_ioctl_add_dev(struct btrfs_root *root, void __user *arg)  	if (!capable(CAP_SYS_ADMIN))  		return -EPERM; -	vol_args = kmalloc(sizeof(*vol_args), GFP_NOFS); +	vol_args = memdup_user(arg, sizeof(*vol_args)); +	if (IS_ERR(vol_args)) +		return PTR_ERR(vol_args); -	if (!vol_args) -		return -ENOMEM; - -	if (copy_from_user(vol_args, arg, sizeof(*vol_args))) { -		ret = -EFAULT; -		goto out; -	}  	vol_args->name[BTRFS_PATH_NAME_MAX] = '\0';  	ret = btrfs_init_new_device(root, vol_args->name); -out:  	kfree(vol_args);  	return ret;  } @@ -703,19 +686,13 @@ static long btrfs_ioctl_rm_dev(struct btrfs_root *root, void __user *arg)  	if (root->fs_info->sb->s_flags & MS_RDONLY)  		return -EROFS; -	vol_args = kmalloc(sizeof(*vol_args), GFP_NOFS); +	vol_args = memdup_user(arg, sizeof(*vol_args)); +	if (IS_ERR(vol_args)) +		return PTR_ERR(vol_args); -	if (!vol_args) -		return -ENOMEM; - -	if (copy_from_user(vol_args, arg, sizeof(*vol_args))) { -		ret = -EFAULT; -		goto out; -	}  	vol_args->name[BTRFS_PATH_NAME_MAX] = '\0';  	ret = btrfs_rm_device(root, vol_args->name); -out:  	kfree(vol_args);  	return ret;  } @@ -830,7 +807,8 @@ static long btrfs_ioctl_clone(struct file *file, unsigned long srcfd,  	BUG_ON(!trans);  	/* punch hole in destination first */ -	btrfs_drop_extents(trans, root, inode, off, off+len, 0, &hint_byte); +	btrfs_drop_extents(trans, root, inode, off, off + len, +			   off + len, 0, &hint_byte);  	/* clone data */  	key.objectid = src->i_ino;  |