Commit e613d8cf authored by Liao Chang's avatar Liao Chang Committed by Viresh Kumar
Browse files

cpufreq: cppc: Set fie_disabled to FIE_DISABLED if fails to create kworker_fie



The function cppc_freq_invariance_init() may failed to create
kworker_fie, make it more robust by setting fie_disabled to FIE_DISBALED
to prevent an invalid pointer dereference in kthread_destroy_worker(),
which called from cppc_freq_invariance_exit().

Signed-off-by: default avatarLiao Chang <liaochang1@huawei.com>
Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
parent 6a4fec4f
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -249,15 +249,19 @@ static void __init cppc_freq_invariance_init(void)
		return;

	kworker_fie = kthread_create_worker(0, "cppc_fie");
	if (IS_ERR(kworker_fie))
	if (IS_ERR(kworker_fie)) {
		pr_warn("%s: failed to create kworker_fie: %ld\n", __func__,
			PTR_ERR(kworker_fie));
		fie_disabled = FIE_DISABLED;
		return;
	}

	ret = sched_setattr_nocheck(kworker_fie->task, &attr);
	if (ret) {
		pr_warn("%s: failed to set SCHED_DEADLINE: %d\n", __func__,
			ret);
		kthread_destroy_worker(kworker_fie);
		return;
		fie_disabled = FIE_DISABLED;
	}
}

@@ -267,7 +271,6 @@ static void cppc_freq_invariance_exit(void)
		return;

	kthread_destroy_worker(kworker_fie);
	kworker_fie = NULL;
}

#else