• Dan Williams's avatar
    libnvdimm, region: fix flush hint detection crash · d2572f5b
    Dan Williams authored
    commit bc042fdf upstream.
    
    In the case where a dimm does not have any associated flush hints the
    ndrd->flush_wpq array may be uninitialized leading to crashes with the
    following signature:
    
     BUG: unable to handle kernel NULL pointer dereference at 0000000000000010
     IP: region_visible+0x10f/0x160 [libnvdimm]
    
     Call Trace:
      internal_create_group+0xbe/0x2f0
      sysfs_create_groups+0x40/0x80
      device_add+0x2d8/0x650
      nd_async_device_register+0x12/0x40 [libnvdimm]
      async_run_entry_fn+0x39/0x170
      process_one_work+0x212/0x6c0
      ? process_one_work+0x197/0x6c0
      worker_thread+0x4e/0x4a0
      kthread+0x10c/0x140
      ? process_one_work+0x6c0/0x6c0
      ? kthread_create_on_node+0x60/0x60
      ret_from_fork+0x31/0x40
    Reviewed-by: default avatarJeff Moyer <jmoyer@redhat.com>
    Fixes: f284a4f2 ("libnvdimm: introduce nvdimm_flush() and nvdimm_has_flush()")
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    d2572f5b
region_devs.c 25.6 KB