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

Commit 69da58b7 authored by Peng Hao's avatar Peng Hao Committed by Greg Kroah-Hartman
Browse files

arm/mach-at91/pm : fix possible object reference leak



[ Upstream commit ba5e60c9b75dec92d4c695b928f69300b17d7686 ]

of_find_device_by_node() takes a reference to the struct device
when it finds a match via get_device. When returning error we should
call put_device.

Reviewed-by: default avatarMukesh Ojha <mojha@codeaurora.org>
Signed-off-by: default avatarPeng Hao <peng.hao2@zte.com.cn>
Signed-off-by: default avatarLudovic Desroches <ludovic.desroches@microchip.com>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 8052c066
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -594,13 +594,13 @@ static int __init at91_pm_backup_init(void)

	np = of_find_compatible_node(NULL, NULL, "atmel,sama5d2-securam");
	if (!np)
		goto securam_fail;
		goto securam_fail_no_ref_dev;

	pdev = of_find_device_by_node(np);
	of_node_put(np);
	if (!pdev) {
		pr_warn("%s: failed to find securam device!\n", __func__);
		goto securam_fail;
		goto securam_fail_no_ref_dev;
	}

	sram_pool = gen_pool_get(&pdev->dev, NULL);
@@ -623,6 +623,8 @@ static int __init at91_pm_backup_init(void)
	return 0;

securam_fail:
	put_device(&pdev->dev);
securam_fail_no_ref_dev:
	iounmap(pm_data.sfrbu);
	pm_data.sfrbu = NULL;
	return ret;