Skip to content

Commit e613d8c

Browse files
Liao Changvireshk
authored andcommitted
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: Liao Chang <liaochang1@huawei.com> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
1 parent 6a4fec4 commit e613d8c

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

drivers/cpufreq/cppc_cpufreq.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -249,15 +249,19 @@ static void __init cppc_freq_invariance_init(void)
249249
return;
250250

251251
kworker_fie = kthread_create_worker(0, "cppc_fie");
252-
if (IS_ERR(kworker_fie))
252+
if (IS_ERR(kworker_fie)) {
253+
pr_warn("%s: failed to create kworker_fie: %ld\n", __func__,
254+
PTR_ERR(kworker_fie));
255+
fie_disabled = FIE_DISABLED;
253256
return;
257+
}
254258

255259
ret = sched_setattr_nocheck(kworker_fie->task, &attr);
256260
if (ret) {
257261
pr_warn("%s: failed to set SCHED_DEADLINE: %d\n", __func__,
258262
ret);
259263
kthread_destroy_worker(kworker_fie);
260-
return;
264+
fie_disabled = FIE_DISABLED;
261265
}
262266
}
263267

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

269273
kthread_destroy_worker(kworker_fie);
270-
kworker_fie = NULL;
271274
}
272275

273276
#else

0 commit comments

Comments
 (0)