Skip to content

Commit 7c0dde8

Browse files
Zihuan Zhangrafaeljw
authored andcommitted
cpufreq: Add defensive check during driver registration
Currently, cpufreq allows drivers to implement both ->target() and ->target_index() callbacks, but that can lead to ambiguous or incorrect behavior. For this reason, prevent cpufreq drivers implementing both ->target() and ->target_index() at the same time from registering. This check can help to catch driver implementation mistakes early and improve overall robustness, without affecting existing valid drivers. Signed-off-by: Zihuan Zhang <[email protected]> Link: https://patch.msgid.link/[email protected] [ rjw: Subject adjustment and changelog rewrite ] Signed-off-by: Rafael J. Wysocki <[email protected]>
1 parent 46c435c commit 7c0dde8

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

drivers/cpufreq/cpufreq.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2911,6 +2911,7 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data)
29112911
return -EPROBE_DEFER;
29122912

29132913
if (!driver_data || !driver_data->verify || !driver_data->init ||
2914+
(driver_data->target_index && driver_data->target) ||
29142915
(!!driver_data->setpolicy == (driver_data->target_index || driver_data->target)) ||
29152916
(!driver_data->get_intermediate != !driver_data->target_intermediate) ||
29162917
(!driver_data->online != !driver_data->offline) ||

0 commit comments

Comments
 (0)