Unverified Commit 4036b29a authored by Uwe Kleine-König's avatar Uwe Kleine-König Committed by Arnd Bergmann
Browse files

ARM: mmp: Fix failure to remove sram device



Make sure in .probe() to set driver data before the function is left to
make it possible in .remove() to undo the actions done.

This fixes a potential memory leak and stops returning an error code in
.remove() that is ignored by the driver core anyhow.

Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parent 022e5220
Loading
Loading
Loading
Loading
+12 −10
Original line number Diff line number Diff line
@@ -72,6 +72,8 @@ static int sram_probe(struct platform_device *pdev)
	if (!info)
		return -ENOMEM;

	platform_set_drvdata(pdev, info);

	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
	if (res == NULL) {
		dev_err(&pdev->dev, "no memory resource defined\n");
@@ -107,8 +109,6 @@ static int sram_probe(struct platform_device *pdev)
	list_add(&info->node, &sram_bank_list);
	mutex_unlock(&sram_lock);

	platform_set_drvdata(pdev, info);

	dev_info(&pdev->dev, "initialized\n");
	return 0;

@@ -127,9 +127,8 @@ static int sram_remove(struct platform_device *pdev)
	struct sram_bank_info *info;

	info = platform_get_drvdata(pdev);
	if (info == NULL)
		return -ENODEV;

	if (info->sram_size) {
		mutex_lock(&sram_lock);
		list_del(&info->node);
		mutex_unlock(&sram_lock);
@@ -137,7 +136,10 @@ static int sram_remove(struct platform_device *pdev)
		gen_pool_destroy(info->gpool);
		iounmap(info->sram_virt);
		kfree(info->pool_name);
	}

	kfree(info);

	return 0;
}