From: Bartlomiej Zolnierkiewicz Date: Mon, 15 Jun 2009 20:13:45 +0000 (+0200) Subject: ide: filter out invalid DMA xfer mode changes in HDIO_DRIVE_CMD ioctl handler X-Git-Tag: v2.6.31-rc1~103^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a9c415090710a108edcd81b3392b90396f190a9a;p=profile%2Fivi%2Fkernel-adaptation-intel-automotive.git ide: filter out invalid DMA xfer mode changes in HDIO_DRIVE_CMD ioctl handler Signed-off-by: Bartlomiej Zolnierkiewicz --- diff --git a/drivers/ide/ide-ioctls.c b/drivers/ide/ide-ioctls.c index 5991b23..82f252c 100644 --- a/drivers/ide/ide-ioctls.c +++ b/drivers/ide/ide-ioctls.c @@ -118,7 +118,6 @@ static int ide_cmd_ioctl(ide_drive_t *drive, unsigned long arg) u8 args[4], xfer_rate = 0; struct ide_cmd cmd; struct ide_taskfile *tf = &cmd.tf; - u16 *id = drive->id; if (NULL == (void *) arg) { struct request *rq; @@ -161,14 +160,10 @@ static int ide_cmd_ioctl(ide_drive_t *drive, unsigned long arg) if (tf->command == ATA_CMD_SET_FEATURES && tf->feature == SETFEATURES_XFER && - tf->nsect >= XFER_SW_DMA_0 && - (id[ATA_ID_UDMA_MODES] || - id[ATA_ID_MWDMA_MODES] || - id[ATA_ID_SWDMA_MODES])) { - xfer_rate = args[1]; - if (tf->nsect > XFER_UDMA_2 && !eighty_ninty_three(drive)) { - printk(KERN_WARNING "%s: UDMA speeds >UDMA33 cannot " - "be set\n", drive->name); + tf->nsect >= XFER_SW_DMA_0) { + xfer_rate = ide_find_dma_mode(drive, XFER_UDMA_6); + if (xfer_rate != tf->nsect) { + err = -EINVAL; goto abort; } }