diff --git a/kernel/watchdog.c b/kernel/watchdog.c index 3154a257c2bd..378bbb91b52a 100644 --- a/kernel/watchdog.c +++ b/kernel/watchdog.c @@ -519,14 +519,12 @@ void watchdog_enable(unsigned int cpu) void watchdog_disable(unsigned int cpu) { - struct hrtimer *hrtimer = this_cpu_ptr(&watchdog_hrtimer); - unsigned int *enabled = this_cpu_ptr(&watchdog_en); + struct hrtimer *hrtimer = per_cpu_ptr(&watchdog_hrtimer, cpu); + unsigned int *enabled = per_cpu_ptr(&watchdog_en, cpu); if (!*enabled) return; - WARN_ON_ONCE(cpu != smp_processor_id()); - /* * Disable the perf event first. That prevents that a large delay * between disabling the timer and disabling the perf event causes @@ -534,7 +532,7 @@ void watchdog_disable(unsigned int cpu) */ watchdog_nmi_disable(cpu); hrtimer_cancel(hrtimer); - wait_for_completion(this_cpu_ptr(&softlockup_completion)); + wait_for_completion(per_cpu_ptr(&softlockup_completion, cpu)); /* * No need for barrier here since disabling the watchdog is