Skip to contentSkip to conversation

pdc202xx_new: add missing ->dma_base check

PATCH In review Bartlomiej Zolnierkiewicz 1 participant 1 message Jul 29, 2007 libata

lore
Share & tools
lore
#0 lore raw

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.

---
 drivers/ide/pci/pdc202xx_new.c |   10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
drivers/ide/pci/pdc202xx_new.c +8 -2
Index: b/drivers/ide/pci/pdc202xx_new.c
===================================================================
@@ -370,6 +370,9 @@ static unsigned int __devinit init_chips
 	int 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)