Showing error 1793

User: Jiri Slaby
Error type: Invalid Pointer Dereference
Error type description: A pointer which is invalid is being dereferenced
File location: drivers/ide/ide-iops.c
Line in file: 791
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-11 08:47:26 UTC


Source:

 761        task.tf.feature = SETFEATURES_XFER;
 762        task.tf.nsect   = speed;
 763
 764        tp_ops->tf_load(drive, &task);
 765
 766        tp_ops->exec_command(hwif, ATA_CMD_SET_FEATURES);
 767
 768        if (drive->quirk_list == 2)
 769                tp_ops->set_irq(hwif, 1);
 770
 771        error = __ide_wait_stat(drive, drive->ready_stat,
 772                                ATA_BUSY | ATA_DRQ | ATA_ERR,
 773                                WAIT_CMD, &stat);
 774
 775        SELECT_MASK(drive, 0);
 776
 777        enable_irq(hwif->irq);
 778
 779        if (error) {
 780                (void) ide_dump_status(drive, "set_drive_speed_status", stat);
 781                return error;
 782        }
 783
 784        id[ATA_ID_UDMA_MODES]  &= ~0xFF00;
 785        id[ATA_ID_MWDMA_MODES] &= ~0x0F00;
 786        id[ATA_ID_SWDMA_MODES] &= ~0x0F00;
 787
 788 skip:
 789#ifdef CONFIG_BLK_DEV_IDEDMA
 790        if (speed >= XFER_SW_DMA_0 && (drive->dev_flags & IDE_DFLAG_USING_DMA))
 791                hwif->dma_ops->dma_host_set(drive, 1);
 792        else if (hwif->dma_ops)        /* check if host supports DMA */
 793                ide_dma_off_quietly(drive);
 794#endif
 795
 796        if (speed >= XFER_UDMA_0) {
 797                i = 1 << (speed - XFER_UDMA_0);
 798                id[ATA_ID_UDMA_MODES] |= (i << 8 | i);
 799        } else if (speed >= XFER_MW_DMA_0) {
 800                i = 1 << (speed - XFER_MW_DMA_0);
 801                id[ATA_ID_MWDMA_MODES] |= (i << 8 | i);
Show full sources