Skip to content

Commit

Permalink
pdc202xx_new: add missing ->dma_base check
Browse files Browse the repository at this point in the history
If ->dma_base is not set (== PCI BAR4 cannot be reserved) then DMA hooks
shouldn't be initialized or bad things will happen.

Also this host driver requires valid PCI BAR4 for normal operation so
check it in ->init_chipset and fail initialization if not set.

Signed-off-by: Bartlomiej Zolnierkiewicz <[email protected]>
  • Loading branch information
bzolnier committed Aug 20, 2007
1 parent f7b0d2d commit 01cc643
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions drivers/ide/pci/pdc202xx_new.c
Original file line number Diff line number Diff line change
Expand Up @@ -378,6 +378,9 @@ static unsigned int __devinit init_chipset_pdcnew(struct pci_dev *dev, const cha
int f, r;
u8 pll_ctl0, pll_ctl1;

if (dma_base == 0)
return -EFAULT;

#ifdef CONFIG_PPC_PMAC
apple_kiwi_init(dev);
#endif
Expand Down Expand Up @@ -494,15 +497,18 @@ static void __devinit init_hwif_pdc202new(ide_hwif_t *hwif)
hwif->speedproc = &pdcnew_tune_chipset;
hwif->resetproc = &pdcnew_reset;

hwif->err_stops_fifo = 1;

hwif->drives[0].autotune = hwif->drives[1].autotune = 1;

if (hwif->dma_base == 0)
return;

hwif->atapi_dma = 1;

hwif->ultra_mask = hwif->cds->udma_mask;
hwif->mwdma_mask = 0x07;

hwif->err_stops_fifo = 1;

hwif->ide_dma_check = &pdcnew_config_drive_xfer_rate;

if (hwif->cbl != ATA_CBL_PATA40_SHORT)
Expand Down

0 comments on commit 01cc643

Please sign in to comment.