Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 76233
b: refs/heads/master
c: 14b89ef
h: refs/heads/master
i:
  76231: 619497b
v: v3
  • Loading branch information
Bartlomiej Zolnierkiewicz committed Jan 25, 2008
1 parent a0bd27d commit fe64647
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 15 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 813a0eb233ee67d7166241a8b389b6a76f2247f9
refs/heads/master: 14b89ef9814614f18a1fcae51e601e7e16a82ef7
29 changes: 15 additions & 14 deletions trunk/drivers/ide/ide-taskfile.c
Original file line number Diff line number Diff line change
Expand Up @@ -806,28 +806,29 @@ int ide_cmd_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg)
return err;
}

static int ide_wait_cmd_task(ide_drive_t *drive, u8 *buf)
{
struct request rq;

ide_init_drive_cmd(&rq);
rq.cmd_type = REQ_TYPE_ATA_TASK;
rq.buffer = buf;
return ide_do_drive_cmd(drive, &rq, ide_wait);
}

int ide_task_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg)
{
void __user *p = (void __user *)arg;
int err = 0;
u8 args[7], *argbuf = args;
int argsize = 7;
u8 args[7];
ide_task_t task;

if (copy_from_user(args, p, 7))
return -EFAULT;
err = ide_wait_cmd_task(drive, argbuf);
if (copy_to_user(p, argbuf, argsize))

memset(&task, 0, sizeof(task));
memcpy(&task.tf_array[7], &args[1], 6);
task.tf.command = args[0];
task.tf_flags = IDE_TFLAG_OUT_TF | IDE_TFLAG_OUT_DEVICE;

err = ide_no_data_taskfile(drive, &task);

args[0] = task.tf.command;
memcpy(&args[1], &task.tf_array[7], 6);

if (copy_to_user(p, args, 7))
err = -EFAULT;

return err;
}

Expand Down

0 comments on commit fe64647

Please sign in to comment.