Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1d76d9dc authored by Bartlomiej Zolnierkiewicz's avatar Bartlomiej Zolnierkiewicz
Browse files

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: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent 74811f35
Loading
Loading
Loading
Loading
+13 −15
Original line number Diff line number Diff line
@@ -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;
	struct it821x_dev *itdevs;
	int rc;

	for (i = 0; i < 2; i++) {
		itdev = kzalloc(sizeof(*itdev), GFP_KERNEL);
		if (itdev == NULL) {
			kfree(itdevs[0]);
	itdevs = kzalloc(2 * sizeof(*itdevs), GFP_KERNEL);
	if (itdevs == NULL) {
		printk(KERN_ERR "it821x: out of memory\n");
		return -ENOMEM;
	}

		itdevs[i] = itdev;
	}

	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[] = {