Commit 5993fe31 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6:
  avr32: clean up memory allocation in at32_add_device_mci
  arch/avr32: Fix build failure for avr32 caused by typo
parents 53910146 cbf8de16
Loading
Loading
Loading
Loading
+9 −6
Original line number Original line Diff line number Diff line
@@ -1325,7 +1325,7 @@ struct platform_device *__init
at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
{
{
	struct platform_device		*pdev;
	struct platform_device		*pdev;
	struct mci_dma_slave		*slave;
	struct mci_dma_data	        *slave;
	u32				pioa_mask;
	u32				pioa_mask;
	u32				piob_mask;
	u32				piob_mask;


@@ -1344,7 +1344,9 @@ at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
				ARRAY_SIZE(atmel_mci0_resource)))
				ARRAY_SIZE(atmel_mci0_resource)))
		goto fail;
		goto fail;


	slave = kzalloc(sizeof(struct mci_dma_slave), GFP_KERNEL);
	slave = kzalloc(sizeof(struct mci_dma_data), GFP_KERNEL);
	if (!slave)
		goto fail;


	slave->sdata.dma_dev = &dw_dmac0_device.dev;
	slave->sdata.dma_dev = &dw_dmac0_device.dev;
	slave->sdata.reg_width = DW_DMA_SLAVE_WIDTH_32BIT;
	slave->sdata.reg_width = DW_DMA_SLAVE_WIDTH_32BIT;
@@ -1357,7 +1359,7 @@ at32_add_device_mci(unsigned int id, struct mci_platform_data *data)


	if (platform_device_add_data(pdev, data,
	if (platform_device_add_data(pdev, data,
				sizeof(struct mci_platform_data)))
				sizeof(struct mci_platform_data)))
		goto fail;
		goto fail_free;


	/* CLK line is common to both slots */
	/* CLK line is common to both slots */
	pioa_mask = 1 << 10;
	pioa_mask = 1 << 10;
@@ -1381,7 +1383,7 @@ at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
		/* Slot is unused */
		/* Slot is unused */
		break;
		break;
	default:
	default:
		goto fail;
		goto fail_free;
	}
	}


	select_peripheral(PIOA, pioa_mask, PERIPH_A, 0);
	select_peripheral(PIOA, pioa_mask, PERIPH_A, 0);
@@ -1408,7 +1410,7 @@ at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
		break;
		break;
	default:
	default:
		if (!data->slot[0].bus_width)
		if (!data->slot[0].bus_width)
			goto fail;
			goto fail_free;


		data->slot[1].bus_width = 0;
		data->slot[1].bus_width = 0;
		break;
		break;
@@ -1419,9 +1421,10 @@ at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
	platform_device_add(pdev);
	platform_device_add(pdev);
	return pdev;
	return pdev;


fail_free:
	kfree(slave);
fail:
fail:
	data->dma_slave = NULL;
	data->dma_slave = NULL;
	kfree(slave);
	platform_device_put(pdev);
	platform_device_put(pdev);
	return NULL;
	return NULL;
}
}