Message ID | CACMJ4GbZ05F1=cXHi1WfSgO3U=YwP3L_sDg_VdS1v9h8bqYdvA@mail.gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
>>> On 09.08.17 at 21:38, <christopher.w.clark@gmail.com> wrote: > On CPUFREQ_GOV_STOP in cpufreq_governor_dbs, shortcut to > return success if the governor is already stopped. > > Avoid executing dbs_timer_exit, to prevent tripping an assertion > within a call to kill_timer on a timer that has not been prepared > with init_timer, if the CPUFREQ_GOV_START case has not > run beforehand. > > kill_timer validates timer state: > * itself, via BUG_ON(this_cpu(timers).running == timer); > * within active_timer, ASSERTing timer->status is within bounds; > * within list_del, which ASSERTs timer inactive list membership. > > Patch is synonymous to an OpenXT patch produced at Citrix prior to > June 2014. > > Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com> Reviewed-by: Jan Beulich <jbeulich@suse.com>
diff --git a/xen/drivers/cpufreq/cpufreq_ondemand.c b/xen/drivers/cpufreq/cpufreq_ondemand.c index 7fdba03..fe6c63d 100644 --- a/xen/drivers/cpufreq/cpufreq_ondemand.c +++ b/xen/drivers/cpufreq/cpufreq_ondemand.c @@ -273,6 +273,10 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy, unsigned int event) break; case CPUFREQ_GOV_STOP: + if ( !this_dbs_info->enable ) + /* Already not enabled */ + break; + dbs_timer_exit(this_dbs_info); dbs_enable--
On CPUFREQ_GOV_STOP in cpufreq_governor_dbs, shortcut to return success if the governor is already stopped. Avoid executing dbs_timer_exit, to prevent tripping an assertion within a call to kill_timer on a timer that has not been prepared with init_timer, if the CPUFREQ_GOV_START case has not run beforehand. kill_timer validates timer state: * itself, via BUG_ON(this_cpu(timers).running == timer); * within active_timer, ASSERTing timer->status is within bounds; * within list_del, which ASSERTs timer inactive list membership. Patch is synonymous to an OpenXT patch produced at Citrix prior to June 2014. Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com> --- xen/drivers/cpufreq/cpufreq_ondemand.c | 4 ++++ 1 file changed, 4 insertions(+)