mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
kernel/watchdog.c: disable nmi perf event in the error path of enabling watchdog
In corner cases where softlockup watchdog is not setup successfully, the relevant nmi perf event for hardlockup watchdog could be disabled, then the status of the underlying hardware remains unchanged. Also, if the kthread doesn't start then the hrtimer won't run and the hardlockup detector will falsely fire. Signed-off-by: Hillf Danton <dhillf@gmail.com> Signed-off-by: Don Zickus <dzickus@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
534e3adbd2
commit
1409f141ac
@ -430,9 +430,12 @@ static int watchdog_enable(int cpu)
|
||||
p = kthread_create(watchdog, (void *)(unsigned long)cpu, "watchdog/%d", cpu);
|
||||
if (IS_ERR(p)) {
|
||||
printk(KERN_ERR "softlockup watchdog for %i failed\n", cpu);
|
||||
if (!err)
|
||||
if (!err) {
|
||||
/* if hardlockup hasn't already set this */
|
||||
err = PTR_ERR(p);
|
||||
/* and disable the perf event */
|
||||
watchdog_nmi_disable(cpu);
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
kthread_bind(p, cpu);
|
||||
|
Loading…
Reference in New Issue
Block a user