From: Bartlomiej Zolnierkiewicz Date: Thu, 24 Jul 2008 20:53:16 +0000 (+0200) Subject: it821x: convert to use ->host_priv X-Git-Tag: v2.6.27-rc1~509^2~67 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=1d76d9dc448d5a6fc7b49ba06c634aa6927bcc3d;p=linux-2.6-omap-h63xx.git it821x: convert to use ->host_priv While at it: * Allocate both struct it821x_dev instances at once. * Don't leak itdevs on ide_pci_init_one() failure. Signed-off-by: Bartlomiej Zolnierkiewicz --- diff --git a/drivers/ide/pci/it821x.c b/drivers/ide/pci/it821x.c index 40186f9e56a..e63fdafe18f 100644 --- a/drivers/ide/pci/it821x.c +++ b/drivers/ide/pci/it821x.c @@ -534,8 +534,9 @@ static struct ide_dma_ops it821x_pass_through_dma_ops = { static void __devinit init_hwif_it821x(ide_hwif_t *hwif) { struct pci_dev *dev = to_pci_dev(hwif->dev); - struct it821x_dev **itdevs = (struct it821x_dev **)pci_get_drvdata(dev); - struct it821x_dev *idev = itdevs[hwif->channel]; + struct ide_host *host = pci_get_drvdata(dev); + struct it821x_dev *itdevs = host->host_priv; + struct it821x_dev *idev = itdevs + hwif->channel; u8 conf; ide_set_hwifdata(hwif, idev); @@ -648,23 +649,20 @@ static const struct ide_port_info it821x_chipsets[] __devinitdata = { static int __devinit it821x_init_one(struct pci_dev *dev, const struct pci_device_id *id) { - struct it821x_dev *itdevs[2] = { NULL, NULL} , *itdev; - unsigned int i; - - for (i = 0; i < 2; i++) { - itdev = kzalloc(sizeof(*itdev), GFP_KERNEL); - if (itdev == NULL) { - kfree(itdevs[0]); - printk(KERN_ERR "it821x: out of memory\n"); - return -ENOMEM; - } + struct it821x_dev *itdevs; + int rc; - itdevs[i] = itdev; + itdevs = kzalloc(2 * sizeof(*itdevs), GFP_KERNEL); + if (itdevs == NULL) { + printk(KERN_ERR "it821x: out of memory\n"); + return -ENOMEM; } - pci_set_drvdata(dev, itdevs); + rc = ide_pci_init_one(dev, &it821x_chipsets[id->driver_data], itdevs); + if (rc) + kfree(itdevs); - return ide_pci_init_one(dev, &it821x_chipsets[id->driver_data], NULL); + return rc; } static const struct pci_device_id it821x_pci_tbl[] = {