lkml.org 
[lkml]   [2017]   [Sep]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: 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);
    }
    \
     
     \ /
      Last update: 2017-09-15 18:25    [W:3.088 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site