• Dan Williams's avatar
    libnvdimm: fix namespace object confusion in is_uuid_busy() · e07ecd76
    Dan Williams authored
    When btt devices were re-worked to be child devices of regions this
    routine was overlooked.  It mistakenly attempts to_nd_namespace_pmem()
    or to_nd_namespace_blk() conversions on btt and pfn devices.  By luck to
    date we have happened to be hitting valid memory leading to a uuid
    miscompare, but a recent change to struct nd_namespace_common causes:
    
     BUG: unable to handle kernel NULL pointer dereference at 0000000000000001
     IP: [<ffffffff814610dc>] memcmp+0xc/0x40
     [..]
     Call Trace:
      [<ffffffffa0028631>] is_uuid_busy+0xc1/0x2a0 [libnvdimm]
      [<ffffffffa0028570>] ? to_nd_blk_region+0x50/0x50 [libnvdimm]
      [<ffffffff8158c9c0>] device_for_each_child+0x50/0x90
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    e07ecd76
region_devs.c 19.6 KB