Commit 9464d6ad authored by Alexander Viro's avatar Alexander Viro Committed by Linus Torvalds

[PATCH] sparse: trivial part of drivers/ide __user annotation

parent afc11cbc
...@@ -2535,7 +2535,7 @@ int ide_cdrom_dev_ioctl (struct cdrom_device_info *cdi, ...@@ -2535,7 +2535,7 @@ int ide_cdrom_dev_ioctl (struct cdrom_device_info *cdi,
case CDROMSETSPINDOWN: { case CDROMSETSPINDOWN: {
char spindown; char spindown;
if (copy_from_user(&spindown, (void *) arg, sizeof(char))) if (copy_from_user(&spindown, (void __user *) arg, sizeof(char)))
return -EFAULT; return -EFAULT;
if ((stat = cdrom_mode_sense(cdi, &cgc, GPMODE_CDROM_PAGE, 0))) if ((stat = cdrom_mode_sense(cdi, &cgc, GPMODE_CDROM_PAGE, 0)))
...@@ -2554,7 +2554,7 @@ int ide_cdrom_dev_ioctl (struct cdrom_device_info *cdi, ...@@ -2554,7 +2554,7 @@ int ide_cdrom_dev_ioctl (struct cdrom_device_info *cdi,
spindown = buffer[11] & 0x0f; spindown = buffer[11] & 0x0f;
if (copy_to_user((void *) arg, &spindown, sizeof (char))) if (copy_to_user((void __user *) arg, &spindown, sizeof (char)))
return -EFAULT; return -EFAULT;
return 0; return 0;
......
...@@ -1052,13 +1052,14 @@ int ide_taskfile_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg) ...@@ -1052,13 +1052,14 @@ int ide_taskfile_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg)
int taskin = 0; int taskin = 0;
int taskout = 0; int taskout = 0;
u8 io_32bit = drive->io_32bit; u8 io_32bit = drive->io_32bit;
char __user *buf = (char __user *)arg;
// printk("IDE Taskfile ...\n"); // printk("IDE Taskfile ...\n");
req_task = kmalloc(tasksize, GFP_KERNEL); req_task = kmalloc(tasksize, GFP_KERNEL);
if (req_task == NULL) return -ENOMEM; if (req_task == NULL) return -ENOMEM;
memset(req_task, 0, tasksize); memset(req_task, 0, tasksize);
if (copy_from_user(req_task, (void *) arg, tasksize)) { if (copy_from_user(req_task, buf, tasksize)) {
kfree(req_task); kfree(req_task);
return -EFAULT; return -EFAULT;
} }
...@@ -1074,7 +1075,7 @@ int ide_taskfile_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg) ...@@ -1074,7 +1075,7 @@ int ide_taskfile_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg)
goto abort; goto abort;
} }
memset(outbuf, 0, taskout); memset(outbuf, 0, taskout);
if (copy_from_user(outbuf, (void *)arg + outtotal, taskout)) { if (copy_from_user(outbuf, buf + outtotal, taskout)) {
err = -EFAULT; err = -EFAULT;
goto abort; goto abort;
} }
...@@ -1088,7 +1089,7 @@ int ide_taskfile_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg) ...@@ -1088,7 +1089,7 @@ int ide_taskfile_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg)
goto abort; goto abort;
} }
memset(inbuf, 0, taskin); memset(inbuf, 0, taskin);
if (copy_from_user(inbuf, (void *)arg + intotal , taskin)) { if (copy_from_user(inbuf, buf + intotal, taskin)) {
err = -EFAULT; err = -EFAULT;
goto abort; goto abort;
} }
...@@ -1196,20 +1197,20 @@ int ide_taskfile_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg) ...@@ -1196,20 +1197,20 @@ int ide_taskfile_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg)
req_task->in_flags = args.tf_in_flags; req_task->in_flags = args.tf_in_flags;
req_task->out_flags = args.tf_out_flags; req_task->out_flags = args.tf_out_flags;
if (copy_to_user((void *)arg, req_task, tasksize)) { if (copy_to_user(buf, req_task, tasksize)) {
err = -EFAULT; err = -EFAULT;
goto abort; goto abort;
} }
if (taskout) { if (taskout) {
int outtotal = tasksize; int outtotal = tasksize;
if (copy_to_user((void *)arg+outtotal, outbuf, taskout)) { if (copy_to_user(buf + outtotal, outbuf, taskout)) {
err = -EFAULT; err = -EFAULT;
goto abort; goto abort;
} }
} }
if (taskin) { if (taskin) {
int intotal = tasksize + taskout; int intotal = tasksize + taskout;
if (copy_to_user((void *)arg+intotal, inbuf, taskin)) { if (copy_to_user(buf + intotal, inbuf, taskin)) {
err = -EFAULT; err = -EFAULT;
goto abort; goto abort;
} }
...@@ -1266,7 +1267,7 @@ int ide_cmd_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg) ...@@ -1266,7 +1267,7 @@ int ide_cmd_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg)
return ide_do_drive_cmd(drive, &rq, ide_wait); return ide_do_drive_cmd(drive, &rq, ide_wait);
} }
if (copy_from_user(args, (void *)arg, 4)) if (copy_from_user(args, (void __user *)arg, 4))
return -EFAULT; return -EFAULT;
memset(&tfargs, 0, sizeof(ide_task_t)); memset(&tfargs, 0, sizeof(ide_task_t));
...@@ -1299,7 +1300,7 @@ int ide_cmd_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg) ...@@ -1299,7 +1300,7 @@ int ide_cmd_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg)
ide_driveid_update(drive); ide_driveid_update(drive);
} }
abort: abort:
if (copy_to_user((void *)arg, argbuf, argsize)) if (copy_to_user((void __user *)arg, argbuf, argsize))
err = -EFAULT; err = -EFAULT;
if (argsize > 4) if (argsize > 4)
kfree(argbuf); kfree(argbuf);
...@@ -1325,14 +1326,15 @@ EXPORT_SYMBOL(ide_wait_cmd_task); ...@@ -1325,14 +1326,15 @@ EXPORT_SYMBOL(ide_wait_cmd_task);
*/ */
int ide_task_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg) int ide_task_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg)
{ {
void __user *p = (void __user *)arg;
int err = 0; int err = 0;
u8 args[7], *argbuf = args; u8 args[7], *argbuf = args;
int argsize = 7; int argsize = 7;
if (copy_from_user(args, (void *)arg, 7)) if (copy_from_user(args, p, 7))
return -EFAULT; return -EFAULT;
err = ide_wait_cmd_task(drive, argbuf); err = ide_wait_cmd_task(drive, argbuf);
if (copy_to_user((void *)arg, argbuf, argsize)) if (copy_to_user(p, argbuf, argsize))
err = -EFAULT; err = -EFAULT;
return err; return err;
} }
......
...@@ -1493,13 +1493,14 @@ int generic_ide_ioctl(struct block_device *bdev, unsigned int cmd, ...@@ -1493,13 +1493,14 @@ int generic_ide_ioctl(struct block_device *bdev, unsigned int cmd,
ide_drive_t *drive = bdev->bd_disk->private_data; ide_drive_t *drive = bdev->bd_disk->private_data;
ide_settings_t *setting; ide_settings_t *setting;
int err = 0; int err = 0;
void __user *p = (void __user *)arg;
down(&ide_setting_sem); down(&ide_setting_sem);
if ((setting = ide_find_setting_by_ioctl(drive, cmd)) != NULL) { if ((setting = ide_find_setting_by_ioctl(drive, cmd)) != NULL) {
if (cmd == setting->read_ioctl) { if (cmd == setting->read_ioctl) {
err = ide_read_setting(drive, setting); err = ide_read_setting(drive, setting);
up(&ide_setting_sem); up(&ide_setting_sem);
return err >= 0 ? put_user(err, (long *) arg) : err; return err >= 0 ? put_user(err, (long __user *)arg) : err;
} else { } else {
if (bdev != bdev->bd_contains) if (bdev != bdev->bd_contains)
err = -EINVAL; err = -EINVAL;
...@@ -1514,14 +1515,14 @@ int generic_ide_ioctl(struct block_device *bdev, unsigned int cmd, ...@@ -1514,14 +1515,14 @@ int generic_ide_ioctl(struct block_device *bdev, unsigned int cmd,
switch (cmd) { switch (cmd) {
case HDIO_GETGEO: case HDIO_GETGEO:
{ {
struct hd_geometry *loc = (struct hd_geometry *) arg; struct hd_geometry geom;
u16 bios_cyl = drive->bios_cyl; /* truncate */ if (!p || (drive->media != ide_disk && drive->media != ide_floppy)) return -EINVAL;
if (!loc || (drive->media != ide_disk && drive->media != ide_floppy)) return -EINVAL; geom.heads = drive->bios_head;
if (put_user(drive->bios_head, (u8 *) &loc->heads)) return -EFAULT; geom.sectors = drive->bios_sect;
if (put_user(drive->bios_sect, (u8 *) &loc->sectors)) return -EFAULT; geom.cylinders = (u16)drive->bios_cyl; /* truncate */
if (put_user(bios_cyl, (u16 *) &loc->cylinders)) return -EFAULT; geom.start = get_start_sect(bdev);
if (put_user((unsigned)get_start_sect(bdev), if (copy_to_user(p, &geom, sizeof(struct hd_geometry)))
(unsigned long *) &loc->start)) return -EFAULT; return -EFAULT;
return 0; return 0;
} }
...@@ -1531,7 +1532,7 @@ int generic_ide_ioctl(struct block_device *bdev, unsigned int cmd, ...@@ -1531,7 +1532,7 @@ int generic_ide_ioctl(struct block_device *bdev, unsigned int cmd,
return -EINVAL; return -EINVAL;
if (drive->id_read == 0) if (drive->id_read == 0)
return -ENOMSG; return -ENOMSG;
if (copy_to_user((char *)arg, (char *)drive->id, (cmd == HDIO_GET_IDENTITY) ? sizeof(*drive->id) : 142)) if (copy_to_user(p, drive->id, (cmd == HDIO_GET_IDENTITY) ? sizeof(*drive->id) : 142))
return -EFAULT; return -EFAULT;
return 0; return 0;
...@@ -1541,7 +1542,7 @@ int generic_ide_ioctl(struct block_device *bdev, unsigned int cmd, ...@@ -1541,7 +1542,7 @@ int generic_ide_ioctl(struct block_device *bdev, unsigned int cmd,
drive->nice0 << IDE_NICE_0 | drive->nice0 << IDE_NICE_0 |
drive->nice1 << IDE_NICE_1 | drive->nice1 << IDE_NICE_1 |
drive->nice2 << IDE_NICE_2, drive->nice2 << IDE_NICE_2,
(long *) arg); (long __user *) arg);
#ifdef CONFIG_IDE_TASK_IOCTL #ifdef CONFIG_IDE_TASK_IOCTL
case HDIO_DRIVE_TASKFILE: case HDIO_DRIVE_TASKFILE:
...@@ -1570,7 +1571,7 @@ int generic_ide_ioctl(struct block_device *bdev, unsigned int cmd, ...@@ -1570,7 +1571,7 @@ int generic_ide_ioctl(struct block_device *bdev, unsigned int cmd,
hw_regs_t hw; hw_regs_t hw;
int args[3]; int args[3];
if (!capable(CAP_SYS_RAWIO)) return -EACCES; if (!capable(CAP_SYS_RAWIO)) return -EACCES;
if (copy_from_user(args, (void *)arg, 3 * sizeof(int))) if (copy_from_user(args, p, 3 * sizeof(int)))
return -EFAULT; return -EFAULT;
memset(&hw, 0, sizeof(hw)); memset(&hw, 0, sizeof(hw));
ide_init_hwif_ports(&hw, (unsigned long) args[0], ide_init_hwif_ports(&hw, (unsigned long) args[0],
...@@ -1643,7 +1644,7 @@ int generic_ide_ioctl(struct block_device *bdev, unsigned int cmd, ...@@ -1643,7 +1644,7 @@ int generic_ide_ioctl(struct block_device *bdev, unsigned int cmd,
case HDIO_GET_BUSSTATE: case HDIO_GET_BUSSTATE:
if (!capable(CAP_SYS_ADMIN)) if (!capable(CAP_SYS_ADMIN))
return -EACCES; return -EACCES;
if (put_user(HWIF(drive)->bus_state, (long *)arg)) if (put_user(HWIF(drive)->bus_state, (long __user *)arg))
return -EFAULT; return -EFAULT;
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment