[PATCH 1/2] perf: arm_dsu: Fix hotplug callback leak in dsu_pmu_init()

Suzuki K Poulose suzuki.poulose at arm.com
Tue Nov 15 03:44:03 PST 2022


On 15/11/2022 07:02, Yuan Can wrote:
> dsu_pmu_init() won't remove the callback added by cpuhp_setup_state_multi()
> when platform_driver_register() failed. Remove the callback by
> cpuhp_remove_multi_state() in fail path.
> 
> Similar to the handling of arm_ccn_init() in commit 26242b330093 ("bus:
> arm-ccn: Prevent hotplug callback leak")
> 
> Fixes: 7520fa99246d ("perf: ARM DynamIQ Shared Unit PMU support")
> Signed-off-by: Yuan Can <yuancan at huawei.com>

Acked-by: Suzuki K Poulose <suzuki.poulose at arm.com>

> ---
>   drivers/perf/arm_dsu_pmu.c | 6 +++++-
>   1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/perf/arm_dsu_pmu.c b/drivers/perf/arm_dsu_pmu.c
> index 4a15c86f45ef..fe2abb412c00 100644
> --- a/drivers/perf/arm_dsu_pmu.c
> +++ b/drivers/perf/arm_dsu_pmu.c
> @@ -858,7 +858,11 @@ static int __init dsu_pmu_init(void)
>   	if (ret < 0)
>   		return ret;
>   	dsu_pmu_cpuhp_state = ret;
> -	return platform_driver_register(&dsu_pmu_driver);
> +	ret = platform_driver_register(&dsu_pmu_driver);
> +	if (ret)
> +		cpuhp_remove_multi_state(dsu_pmu_cpuhp_state);
> +
> +	return ret;
>   }
>   
>   static void __exit dsu_pmu_exit(void)




More information about the linux-arm-kernel mailing list