MODULE_PARM(tp720esdi, "i");
MODULE_PARM(cyl, "i");
MODULE_PARM(head, "i");
-MODULE_PARM(track, "i");
+MODULE_PARM(sect, "i");
MODULE_LICENSE("GPL");
int init_module(void) {
struct file *file, u_int cmd, u_long arg)
{
struct ps2esdi_i_struct *p = inode->i_bdev->bd_disk->private_data;
- struct ps2esdi_geometry *geometry = (struct ps2esdi_geometry *) arg;
- int err;
+ struct ps2esdi_geometry geom;
if (cmd != HDIO_GETGEO)
return -EINVAL;
- if ((err = verify_area(VERIFY_WRITE, geometry, sizeof(*geometry))))
- return (err);
- put_user(p->head, (char *) &geometry->heads);
- put_user(p->sect, (char *) &geometry->sectors);
- put_user(p->cyl, (short *) &geometry->cylinders);
- put_user(get_start_sect(inode->i_bdev), (long *) &geometry->start);
+ memset(&geom, 0, sizeof(geom));
+ geom.heads = p->head;
+ geom.sectors = p->sect;
+ geom.cylinders = p->cyl;
+ geom.start = get_start_sect(inode->i_bdev);
+ if (copy_to_user((void __user *)arg, &geom, sizeof(geom)))
+ return -EFAULT;
return 0;
}