[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.DEB.2.20.1709151820250.1833@nanos>
Date: Fri, 15 Sep 2017 18:24:20 +0200 (CEST)
From: Thomas Gleixner <tglx@...utronix.de>
To: kernel test robot <fengguang.wu@...el.com>
cc: LKP <lkp@...org>, LKML <linux-kernel@...r.kernel.org>,
Don Zickus <dzickus@...hat.com>,
Ingo Molnar <mingo@...nel.org>, wfg@...ux.intel.com,
Peter Zijlstra <peterz@...radead.org>
Subject: Re: d57108d4f6 ("watchdog/core: Get rid of the thread .."): BUG:
unable to handle kernel NULL pointer dereference at 0000000000000208
On Fri, 15 Sep 2017, Thomas Gleixner wrote:
> On Fri, 15 Sep 2017, Thomas Gleixner wrote:
>
> > On Fri, 15 Sep 2017, kernel test robot wrote:
> > > [ 0.035023] CPU: Intel Common KVM processor (family: 0xf, model: 0x6, stepping: 0x1)
> > > [ 0.042302] Performance Events: unsupported Netburst CPU model 6 no PMU driver, software events only.
> >
> > Cute. So there is no supported PMU, but for some unknown reason the lockup
> > detector can create an event, otherwise the perf availaibility check in
> > lockup_detector_init() would fail ....
> >
> > Peter???
>
> In my VM the corresponding dmesg is:
>
> [ 0.038086] Performance Events: unsupported p6 CPU model 61 no PMU driver, software events only.
> [ 0.041031] Hierarchical SRCU implementation.
> [ 0.046210] NMI watchdog: Perf event create on CPU 0 failed with -2
> [ 0.046980] NMI watchdog: Perf NMI watchdog permanetely disabled
>
> Confused
I still can't reproduce. Can you please apply the debug patch below and
provide the output?
Thanks,
tglx
8<-----------------
diff --git a/kernel/watchdog_hld.c b/kernel/watchdog_hld.c
index b2931154b5f2..e6c9ca516945 100644
--- a/kernel/watchdog_hld.c
+++ b/kernel/watchdog_hld.c
@@ -171,6 +171,7 @@ static int hardlockup_detector_event_create(void)
/* Try to register using hardware perf events */
evt = perf_event_create_kernel_counter(wd_attr, cpu, NULL,
watchdog_overflow_callback, NULL);
+ pr_info("EVT create on CPU %u returned %p\n", cpu, evt);
if (IS_ERR(evt)) {
pr_info("Perf event create on CPU %d failed with %ld\n", cpu,
PTR_ERR(evt));
@@ -221,7 +222,10 @@ void hardlockup_detector_perf_cleanup(void)
struct perf_event *event = per_cpu(watchdog_ev, cpu);
per_cpu(watchdog_ev, cpu) = NULL;
- perf_event_release_kernel(event);
+ pr_info("EVT on CPU %u in dead mask: %p\n", cpu, event);
+ if (event)
+ perf_event_release_kernel(event);
+
}
cpumask_clear(&dead_events_mask);
}
Powered by blists - more mailing lists