diff options
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/dm-ioctl.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c index 9627fa0f9470..4aa1f78b78f0 100644 --- a/drivers/md/dm-ioctl.c +++ b/drivers/md/dm-ioctl.c | |||
@@ -702,7 +702,7 @@ static int dev_rename(struct dm_ioctl *param, size_t param_size) | |||
702 | int r; | 702 | int r; |
703 | char *new_name = (char *) param + param->data_start; | 703 | char *new_name = (char *) param + param->data_start; |
704 | 704 | ||
705 | if (new_name < (char *) param->data || | 705 | if (new_name < param->data || |
706 | invalid_str(new_name, (void *) param + param_size)) { | 706 | invalid_str(new_name, (void *) param + param_size)) { |
707 | DMWARN("Invalid new logical volume name supplied."); | 707 | DMWARN("Invalid new logical volume name supplied."); |
708 | return -EINVAL; | 708 | return -EINVAL; |
@@ -728,7 +728,7 @@ static int dev_set_geometry(struct dm_ioctl *param, size_t param_size) | |||
728 | if (!md) | 728 | if (!md) |
729 | return -ENXIO; | 729 | return -ENXIO; |
730 | 730 | ||
731 | if (geostr < (char *) param->data || | 731 | if (geostr < param->data || |
732 | invalid_str(geostr, (void *) param + param_size)) { | 732 | invalid_str(geostr, (void *) param + param_size)) { |
733 | DMWARN("Invalid geometry supplied."); | 733 | DMWARN("Invalid geometry supplied."); |
734 | goto out; | 734 | goto out; |
@@ -1397,13 +1397,11 @@ static int validate_params(uint cmd, struct dm_ioctl *param) | |||
1397 | return 0; | 1397 | return 0; |
1398 | } | 1398 | } |
1399 | 1399 | ||
1400 | static int ctl_ioctl(struct inode *inode, struct file *file, | 1400 | static int ctl_ioctl(uint command, struct dm_ioctl __user *user) |
1401 | uint command, ulong u) | ||
1402 | { | 1401 | { |
1403 | int r = 0; | 1402 | int r = 0; |
1404 | unsigned int cmd; | 1403 | unsigned int cmd; |
1405 | struct dm_ioctl *param; | 1404 | struct dm_ioctl *param; |
1406 | struct dm_ioctl __user *user = (struct dm_ioctl __user *) u; | ||
1407 | ioctl_fn fn = NULL; | 1405 | ioctl_fn fn = NULL; |
1408 | size_t param_size; | 1406 | size_t param_size; |
1409 | 1407 | ||
@@ -1471,8 +1469,13 @@ static int ctl_ioctl(struct inode *inode, struct file *file, | |||
1471 | return r; | 1469 | return r; |
1472 | } | 1470 | } |
1473 | 1471 | ||
1472 | static long dm_ctl_ioctl(struct file *file, uint command, ulong u) | ||
1473 | { | ||
1474 | return (long)ctl_ioctl(command, (struct dm_ioctl __user *)u); | ||
1475 | } | ||
1476 | |||
1474 | static const struct file_operations _ctl_fops = { | 1477 | static const struct file_operations _ctl_fops = { |
1475 | .ioctl = ctl_ioctl, | 1478 | .unlocked_ioctl = dm_ctl_ioctl, |
1476 | .owner = THIS_MODULE, | 1479 | .owner = THIS_MODULE, |
1477 | }; | 1480 | }; |
1478 | 1481 | ||