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

Commit c32a5087 authored by durgadoss.r@intel.com's avatar durgadoss.r@intel.com Committed by Zhang Rui
Browse files

Thermal: Tidy up error handling in powerclamp_init



This patch
 * adds missing kfree() for cpu_clamping_mask
 * adds return value checking for alloc_percpu()
 * unregister hotcpu notifier in exit path

Signed-off-by: default avatarDurgadoss R <durgadoss.r@intel.com>
Signed-off-by: default avatarZhang Rui <rui.zhang@intel.com>
parent 22356f44
Loading
Loading
Loading
Loading
+21 −3
Original line number Diff line number Diff line
@@ -758,21 +758,39 @@ static int powerclamp_init(void)
	/* probe cpu features and ids here */
	retval = powerclamp_probe();
	if (retval)
		return retval;
		goto exit_free;

	/* set default limit, maybe adjusted during runtime based on feedback */
	window_size = 2;
	register_hotcpu_notifier(&powerclamp_cpu_notifier);

	powerclamp_thread = alloc_percpu(struct task_struct *);
	if (!powerclamp_thread) {
		retval = -ENOMEM;
		goto exit_unregister;
	}

	cooling_dev = thermal_cooling_device_register("intel_powerclamp", NULL,
						&powerclamp_cooling_ops);
	if (IS_ERR(cooling_dev))
		return -ENODEV;
	if (IS_ERR(cooling_dev)) {
		retval = -ENODEV;
		goto exit_free_thread;
	}

	if (!duration)
		duration = jiffies_to_msecs(DEFAULT_DURATION_JIFFIES);

	powerclamp_create_debug_files();

	return 0;

exit_free_thread:
	free_percpu(powerclamp_thread);
exit_unregister:
	unregister_hotcpu_notifier(&powerclamp_cpu_notifier);
exit_free:
	kfree(cpu_clamping_mask);
	return retval;
}
module_init(powerclamp_init);