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

Commit 47aedb4c authored by Kunwu Chan's avatar Kunwu Chan Committed by Greg Kroah-Hartman
Browse files

ARM: imx: Check return value of devm_kasprintf in imx_mmdc_perf_init



[ Upstream commit 1c2b1049af3f86545fcc5fae0fc725fb64b3a09e ]

devm_kasprintf() returns a pointer to dynamically allocated memory
which can be NULL upon failure. Ensure the allocation was successful
by checking the pointer validity.

Release the id allocated in 'mmdc_pmu_init' when 'devm_kasprintf'
return NULL

Suggested-by: default avatarAhmad Fatoum <a.fatoum@pengutronix.de>
Fixes: e76bdfd7 ("ARM: imx: Added perf functionality to mmdc driver")
Signed-off-by: default avatarKunwu Chan <chentao@kylinos.cn>
Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 9682d577
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -513,6 +513,10 @@ static int imx_mmdc_perf_init(struct platform_device *pdev, void __iomem *mmdc_b

	name = devm_kasprintf(&pdev->dev,
				GFP_KERNEL, "mmdc%d", ret);
	if (!name) {
		ret = -ENOMEM;
		goto pmu_release_id;
	}

	pmu_mmdc->mmdc_ipg_clk = mmdc_ipg_clk;
	pmu_mmdc->devtype_data = (struct fsl_mmdc_devtype_data *)of_id->data;
@@ -535,9 +539,10 @@ static int imx_mmdc_perf_init(struct platform_device *pdev, void __iomem *mmdc_b

pmu_register_err:
	pr_warn("MMDC Perf PMU failed (%d), disabled\n", ret);
	ida_simple_remove(&mmdc_ida, pmu_mmdc->id);
	cpuhp_state_remove_instance_nocalls(cpuhp_mmdc_state, &pmu_mmdc->node);
	hrtimer_cancel(&pmu_mmdc->hrtimer);
pmu_release_id:
	ida_simple_remove(&mmdc_ida, pmu_mmdc->id);
pmu_free:
	kfree(pmu_mmdc);
	return ret;