1. 01 Mar, 2017 2 commits
    • Dan Williams's avatar
      nfit, libnvdimm: fix interleave set cookie calculation · 86ef58a4
      Dan Williams authored
      The interleave-set cookie is a sum that sanity checks the composition of
      an interleave set has not changed from when the namespace was initially
      created.  The checksum is calculated by sorting the DIMMs by their
      location in the interleave-set. The comparison for the sort must be
      64-bit wide, not byte-by-byte as performed by memcmp() in the broken
      case.
      
      Fix the implementation to accept correct cookie values in addition to
      the Linux "memcmp" order cookies, but only allow correct cookies to be
      generated going forward. It does mean that namespaces created by
      third-party-tooling, or created by newer kernels with this fix, will not
      validate on older kernels. However, there are a couple mitigating
      conditions:
      
          1/ platforms with namespace-label capable NVDIMMs are not widely
             available.
      
          2/ interleave-sets with a single-dimm are by definition not affected
             (nothing to sort). This covers the QEMU-KVM NVDIMM emulation case.
      
      The cookie stored in the namespace label will be fixed by any write the
      namespace label, the most straightforward way to achieve this is to
      write to the "alt_name" attribute of a namespace in sysfs.
      
      Cc: <stable@vger.kernel.org>
      Fixes: eaf96153 ("libnvdimm, nfit: add interleave-set state-tracking infrastructure")
      Reported-by: default avatarNicholas Moulin <nicholas.w.moulin@linux.intel.com>
      Tested-by: default avatarNicholas Moulin <nicholas.w.moulin@linux.intel.com>
      Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      86ef58a4
    • Dan Williams's avatar
      tools/testing/nvdimm: make iset cookie predictable · df06a2d5
      Dan Williams authored
      For testing changes to the iset cookie algorithm we need a value that is
      constant from run-to-run.
      
      Stop including dynamic data in the emulated region_offset values. Also,
      pick values that sort in a different order depending on whether the
      comparison is a memcmp() of two 8-byte arrays or subtraction of two
      64-bit values.
      Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      df06a2d5
  2. 19 Feb, 2017 11 commits
  3. 18 Feb, 2017 1 commit
  4. 17 Feb, 2017 19 commits
  5. 16 Feb, 2017 7 commits