aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md')
-rw-r--r--drivers/md/dm-ioctl.c15
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
1400static int ctl_ioctl(struct inode *inode, struct file *file, 1400static 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
1472static 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
1474static const struct file_operations _ctl_fops = { 1477static 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