From 143ee06bfad83cdf9395da4c975668086e41cf4a Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Sun, 8 Oct 2006 13:43:51 +0000 Subject: 2006-10-08 Thomas Schwinge * linux/dev/drivers/scsi/sd_ioctl.c: Move file... * linux/src/drivers/scsi/sd_ioctl.c: ... here. --- linux/src/drivers/scsi/sd_ioctl.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'linux/src') diff --git a/linux/src/drivers/scsi/sd_ioctl.c b/linux/src/drivers/scsi/sd_ioctl.c index 52fd754..4c58f04 100644 --- a/linux/src/drivers/scsi/sd_ioctl.c +++ b/linux/src/drivers/scsi/sd_ioctl.c @@ -31,9 +31,11 @@ int sd_ioctl(struct inode * inode, struct file * file, unsigned int cmd, unsigne switch (cmd) { case HDIO_GETGEO: /* Return BIOS disk parameters */ if (!loc) return -EINVAL; +#ifndef MACH error = verify_area(VERIFY_WRITE, loc, sizeof(*loc)); if (error) return error; +#endif host = rscsi_disks[MINOR(dev) >> 4].device->host; /* default to most commonly used values */ @@ -51,10 +53,17 @@ int sd_ioctl(struct inode * inode, struct file * file, unsigned int cmd, unsigne else scsicam_bios_param(&rscsi_disks[MINOR(dev) >> 4], dev, &diskinfo[0]); +#ifdef MACH + loc->heads = diskinfo[0]; + loc->sectors = diskinfo[1]; + loc->cylinders = diskinfo[2]; + loc->start = sd[MINOR(inode->i_rdev)].start_sect; +#else put_user(diskinfo[0], &loc->heads); put_user(diskinfo[1], &loc->sectors); put_user(diskinfo[2], &loc->cylinders); put_user(sd[MINOR(inode->i_rdev)].start_sect, &loc->start); +#endif return 0; case BLKGETSIZE: /* Return device size */ if (!arg) return -EINVAL; -- cgit v1.2.3