Dan Williams
86ef58a4e3
nfit, libnvdimm: fix interleave set cookie calculation
...
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: eaf961536e ("libnvdimm, nfit: add interleave-set state-tracking infrastructure")
Reported-by: Nicholas Moulin <nicholas.w.moulin@linux.intel.com>
Tested-by: Nicholas Moulin <nicholas.w.moulin@linux.intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2017-03-01 00:49:42 -08:00
..
acpica
ACPICA: Tables: Fix hidden logic related to acpi_tb_install_standard_table()
2017-01-20 03:44:58 +01:00
apei
ACPI / APEI / ARM64: APEI initial support for ARM64
2016-12-02 00:24:34 +01:00
arm64
ACPI/IORT: Make dma masks set-up IORT specific
2016-12-06 16:57:33 +01:00
dptf
ACPI / platform: Add support for build-in properties
2016-11-10 00:30:29 +01:00
nfit
nfit, libnvdimm: fix interleave set cookie calculation
2017-03-01 00:49:42 -08:00
pmic
ACPI / PMIC: remove modular references from non-modular code
2016-07-16 03:03:14 +02:00
ac.c
acpi_amba.c
ACPI / amba: Remove CLK_IS_ROOT
2016-04-27 23:42:57 +02:00
acpi_apd.c
Merge branches 'acpi-soc', 'acpi-battery', 'acpi-video', 'acpi-cppc' and 'acpi-apei'
2016-12-12 20:48:01 +01:00
acpi_cmos_rtc.c
char/genrtc: x86: remove remnants of asm/rtc.h
2016-06-04 00:20:07 +02:00
acpi_configfs.c
ACPI: Rename configfs.c to acpi_configfs.c to prevent link error
2016-07-11 15:13:36 +02:00
acpi_dbg.c
ACPI / debugger: Fix regression introduced by IS_ERR_VALUE() removal
2016-07-05 23:02:34 +02:00
acpi_extlog.c
acpi_ipmi.c
acpi_lpat.c
ACPI / lpat: make it explicitly non-modular
2016-07-16 03:08:10 +02:00
acpi_lpss.c
Merge branches 'acpi-soc', 'acpi-battery', 'acpi-video', 'acpi-cppc' and 'acpi-apei'
2016-12-12 20:48:01 +01:00
acpi_memhotplug.c
acpi_pad.c
ACPI / PAD: don't register acpi_pad driver if running as Xen dom0
2016-10-12 21:44:04 +02:00
acpi_platform.c
Merge branch 'device-properties'
2016-11-11 23:23:02 +01:00
acpi_pnp.c
acpi_processor.c
acpi: Validate processor id when mapping the processor
2016-09-21 21:18:40 +02:00
acpi_video.c
Replace <asm/uaccess.h> with <linux/uaccess.h> globally
2016-12-24 11:46:01 -08:00
acpi_watchdog.c
ACPI / watchdog: Print out error number when device creation fails
2016-12-26 23:21:56 +01:00
battery.c
Replace <asm/uaccess.h> with <linux/uaccess.h> globally
2016-12-24 11:46:01 -08:00
battery.h
bgrt.c
blacklist.c
ACPI / blacklist: Make Dell Latitude 3350 ethernet work
2016-11-16 23:01:29 +01:00
bus.c
Merge branches 'acpica' and 'acpi-scan'
2016-12-22 14:34:24 +01:00
button.c
ACPI / button: Fix an issue in button.lid_init_state=ignore mode
2016-08-31 01:06:20 +02:00
cm_sbs.c
container.c
cppc_acpi.c
ACPI / CPPC: Fix per-CPU pointer management in acpi_cppc_processor_probe()
2016-12-12 23:52:34 +01:00
custom_method.c
debugfs.c
device_pm.c
ACPI / PM: Export acpi_device_fix_up_power()
2016-05-20 15:54:01 +02:00
device_sysfs.c
ACPI / property: Hierarchical properties support update
2016-11-24 02:43:47 +01:00
dock.c
ACPI / dock: make dock explicitly non-modular
2016-07-16 03:08:08 +02:00
ec.c
ACPI / EC: Fix unused function warning when CONFIG_PM_SLEEP=n
2016-10-10 02:22:20 +02:00
ec_sys.c
event.c
genetlink: mark families as __ro_after_init
2016-10-27 16:16:09 -04:00
evged.c
ACPI / GED: make evged.c explicitly non-modular
2016-05-09 22:59:25 +02:00
fan.c
ACPI / fan: Fix error reading cur_state
2016-10-10 02:20:43 +02:00
glue.c
ACPI / scan: Prefer devices without _HID/_CID for _ADR matching
2017-01-02 22:21:59 +01:00
gsi.c
hed.c
internal.h
ACPI / sysfs: Provide quirk mechanism to prevent GPE flooding
2016-12-26 23:16:39 +01:00
ioapic.c
x86/ioapic: Fix IOAPIC failing to request resource
2016-08-18 11:45:19 +02:00
Kconfig
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2016-12-14 11:12:25 -08:00
Makefile
TTY/Serial patches for 4.9-rc1
2016-10-03 20:11:49 -07:00
numa.c
ACPI/NUMA: Do not map pxm to node when NUMA is turned off
2016-12-15 11:32:32 +01:00
nvs.c
osi.c
ACPI / osi: Collect _OSI handling into one single file
2016-05-05 00:13:53 +02:00
osl.c
Replace <asm/uaccess.h> with <linux/uaccess.h> globally
2016-12-24 11:46:01 -08:00
pci_irq.c
ACPI / PCI: fix GIC irq model default PCI IRQ polarity
2016-09-10 02:50:50 +02:00
pci_link.c
ACPI/PCI: pci_link: Include PIRQ_PENALTY_PCI_USING for ISA IRQs
2016-10-24 14:18:14 +02:00
pci_mcfg.c
PCI: Add MCFG quirks for X-Gene host controller
2016-12-06 13:45:50 -06:00
pci_root.c
x86/ioapic: Support hot-removal of IOAPICs present during boot
2016-08-18 11:45:18 +02:00
pci_slot.c
ACPI / PCI: make pci_slot explicitly non-modular
2016-07-16 03:05:29 +02:00
power.c
proc.c
Replace <asm/uaccess.h> with <linux/uaccess.h> globally
2016-12-24 11:46:01 -08:00
processor_core.c
ACPI / osl: Remove acpi_get_table_with_size()/early_acpi_os_unmap_memory() users
2016-12-21 02:36:38 +01:00
processor_driver.c
Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2016-10-03 19:43:08 -07:00
processor_idle.c
x86/amd: Simplify AMD E400 aware idle routine
2016-12-09 21:23:21 +01:00
processor_pdc.c
processor_perflib.c
ACPI / processor: Make acpi_processor_ppc_has_changed() void
2016-11-21 14:35:42 +01:00
processor_thermal.c
Replace <asm/uaccess.h> with <linux/uaccess.h> globally
2016-12-24 11:46:01 -08:00
processor_throttling.c
Replace <asm/uaccess.h> with <linux/uaccess.h> globally
2016-12-24 11:46:01 -08:00
property.c
ACPI / property: Hierarchical properties support update
2016-11-24 02:43:47 +01:00
reboot.c
resource.c
ACPI: Add acpi_resource_consumer() to find device that claims a resource
2016-12-01 14:59:32 -06:00
sbs.c
sbshc.c
sbshc.h
scan.c
ACPI / sysfs: Provide quirk mechanism to prevent GPE flooding
2016-12-26 23:16:39 +01:00
sleep.c
Merge branches 'pm-sleep' and 'pm-cpufreq'
2017-01-27 00:08:59 +01:00
sleep.h
spcr.c
ACPI / osl: Remove acpi_get_table_with_size()/early_acpi_os_unmap_memory() users
2016-12-21 02:36:38 +01:00
sysfs.c
ACPI / sysfs: Provide quirk mechanism to prevent GPE flooding
2016-12-26 23:16:39 +01:00
tables.c
ACPI / osl: Remove acpi_get_table_with_size()/early_acpi_os_unmap_memory() users
2016-12-21 02:36:38 +01:00
thermal.c
Replace <asm/uaccess.h> with <linux/uaccess.h> globally
2016-12-24 11:46:01 -08:00
utils.c
nfit: make DIMM DSMs optional
2016-07-19 12:32:39 -07:00
video_detect.c
Revert "ACPI / video: Add force_native quirk for HP Pavilion dv6"
2017-01-25 14:04:13 +01:00
wakeup.c