pdc202xx_new: add missing ->dma_base check
PATCH 5/12 pdc202xx_new: add missing ->dma_base check
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]>
--- drivers/ide/pci/pdc202xx_new.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
drivers/ide/pci/pdc202xx_new.c +8 -2
@@ -370,6 +370,9 @@ static unsigned int __devinit init_chipsint f, r;u8 pll_ctl0, pll_ctl1; +if (dma_base ==0 ) +return -EFAULT ; +#ifdef CONFIG_PPC_PMAC apple_kiwi_init (dev);#endif
@@ -487,15 +490,18 @@ static void __devinit init_hwif_pdc202ne hwif->quirkproc = &pdcnew_quirkproc; 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 )