--- linux-2.5.24/drivers/ide/ioctl.c Wed Jun 26 00:02:53 2002 +++ linux/drivers/ide/ioctl.c Sun Jun 30 22:16:50 2002 @@ -122,9 +122,6 @@ case HDIO_GET_32BIT: { unsigned long val = drive->channel->io_32bit; - if (!capable(CAP_SYS_ADMIN)) - return -EACCES; - if (put_user(val, (unsigned long *) arg)) return -EFAULT; return 0; @@ -172,9 +169,6 @@ case HDIO_GET_UNMASKINTR: { unsigned long val = drive->channel->unmask; - if (!capable(CAP_SYS_ADMIN)) - return -EACCES; - if (put_user(val, (unsigned long *) arg)) return -EFAULT; @@ -202,9 +196,6 @@ case HDIO_GET_DMA: { unsigned long val = drive->using_dma; - if (!capable(CAP_SYS_ADMIN)) - return -EACCES; - if (put_user(val, (unsigned long *) arg)) return -EFAULT; @@ -236,9 +227,6 @@ struct hd_geometry *loc = (struct hd_geometry *) arg; unsigned short bios_cyl = drive->bios_cyl; /* truncate */ - if (!capable(CAP_SYS_ADMIN)) - return -EACCES; - if (!loc || (drive->type != ATA_DISK && drive->type != ATA_FLOPPY)) return -EINVAL; @@ -261,9 +249,6 @@ case HDIO_GETGEO_BIG_RAW: { struct hd_big_geometry *loc = (struct hd_big_geometry *) arg; - if (!capable(CAP_SYS_ADMIN)) - return -EACCES; - if (!loc || (drive->type != ATA_DISK && drive->type != ATA_FLOPPY)) return -EINVAL; @@ -284,8 +269,6 @@ } case HDIO_GET_IDENTITY: - if (!capable(CAP_SYS_ADMIN)) - return -EACCES; if (minor(inode->i_rdev) & PARTN_MASK) return -EINVAL; @@ -299,8 +282,6 @@ return 0; case HDIO_GET_NICE: - if (!capable(CAP_SYS_ADMIN)) - return -EACCES; return put_user(drive->dsc_overlap << IDE_NICE_DSC_OVERLAP | drive->atapi_overlap << IDE_NICE_ATAPI_OVERLAP, @@ -323,8 +304,6 @@ return 0; case HDIO_GET_BUSSTATE: - if (!capable(CAP_SYS_ADMIN)) - return -EACCES; if (put_user(drive->channel->bus_state, (long *)arg)) return -EFAULT; @@ -362,6 +341,9 @@ return block_ioctl(inode->i_bdev, cmd, arg); case BLKRRPART: /* Re-read partition tables */ + if (!capable(CAP_SYS_ADMIN)) + return -EACCES; + return ata_revalidate(inode->i_rdev); case BLKGETSIZE: