linux-stable/drivers
Mikulas Patocka a999296636 dm writecache: fix incorrect flush sequence when doing SSD mode commit
commit aa9509209c upstream.

When committing state, the function writecache_flush does the following:
1. write metadata (writecache_commit_flushed)
2. flush disk cache (writecache_commit_flushed)
3. wait for data writes to complete (writecache_wait_for_ios)
4. increase superblock seq_count
5. write the superblock
6. flush disk cache

It may happen that at step 3, when we wait for some write to finish, the
disk may report the write as finished, but the write only hit the disk
cache and it is not yet stored in persistent storage. At step 5 we write
the superblock - it may happen that the superblock is written before the
write that we waited for in step 3. If the machine crashes, it may result
in incorrect data being returned after reboot.

In order to fix the bug, we must swap steps 2 and 3 in the above sequence,
so that we first wait for writes to complete and then flush the disk
cache.

Fixes: 48debafe4f ("dm: add writecache target")
Cc: stable@vger.kernel.org # 4.18+
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-02-11 04:34:04 -08:00
..
accessibility
acpi ACPI / battery: Deal better with neither design nor full capacity not being reported 2020-02-11 04:33:59 -08:00
amba
android
ata ahci: Do not export local variable ahci_em_messages 2020-01-27 14:51:07 +01:00
atm atm: eni: fix uninitialized variable warning 2020-02-01 09:37:09 +00:00
auxdisplay
base PM: core: Fix handling of devices deleted during system-wide resume 2020-02-11 04:34:03 -08:00
bcma bcma: fix incorrect update of BCMA_CORE_PCI_MDIO_DATA 2020-01-27 14:51:09 +01:00
block signal: Allow cifs and drbd to receive their terminating signals 2020-01-27 14:51:05 +01:00
bluetooth
bus bus: ti-sysc: Fix sysc_unprepare() when no clocks have been allocated 2020-01-27 14:50:36 +01:00
cdrom
char ttyprintk: fix a potential deadlock in interrupt context issue 2020-02-05 14:43:39 +00:00
clk clk: mmp2: Fix the order of timer mux parents 2020-02-05 14:43:43 +00:00
clocksource clocksource/drivers/exynos_mct: Fix error path in timer resources initialization 2020-01-27 14:50:27 +01:00
connector
cpufreq cpufreq: brcmstb-avs-cpufreq: Fix types for voltage/frequency 2020-01-27 14:50:53 +01:00
cpuidle
crypto crypto: ccree - fix PM race condition 2020-02-11 04:34:01 -08:00
dax
dca
devfreq PM / devfreq: Add new name attribute for sysfs 2020-02-05 14:43:34 +00:00
dio
dma dmaengine: ti: edma: fix missed failure handling 2020-01-27 14:51:22 +01:00
dma-buf
edac EDAC/mc: Fix edac_mc_find() in case no device is found 2020-01-27 14:50:48 +01:00
eisa
extcon
firewire
firmware firmware: dmi: Fix unlikely out-of-bounds read in save_mem_devices 2020-01-27 14:51:19 +01:00
fmc
fpga
fsi fsi: sbefifo: Don't fail operations when in SBE IPL state 2020-01-27 14:51:00 +01:00
gnss
gpio gpio: max77620: Add missing dependency on GPIOLIB_IRQCHIP 2020-02-01 09:37:09 +00:00
gpu Revert "drm/sun4i: dsi: Change the start delay calculation" 2020-02-11 04:33:50 -08:00
hid HID: steam: Fix input device disappearing 2020-02-01 09:37:09 +00:00
hsi
hv hv_balloon: Balloon up according to request page number 2020-02-11 04:34:01 -08:00
hwmon hwmon: (nct7802) Fix voltage limits to wrong registers 2020-01-29 16:43:21 +01:00
hwspinlock
hwtracing coresight: tmc-etf: Do not call smp_processor_id from preemptible 2020-01-29 16:43:23 +01:00
i2c i2c: stm32f7: report dma error during probe 2020-01-27 14:51:21 +01:00
ide
idle
iio iio: st_gyro: Correct data for LSM9DS0 gyro 2020-02-01 09:37:04 +00:00
infiniband scsi: RDMA/isert: Fix a recently introduced regression related to logout 2020-01-29 16:43:21 +01:00
input Input: sun4i-ts - add a check for devm_thermal_zone_of_sensor_register 2020-01-29 16:43:20 +01:00
iommu iommu/amd: Support multiple PCI DMA aliases in IRQ Remapping 2020-02-01 09:37:10 +00:00
ipack
irqchip
isdn
leds led: triggers: Fix dereferencing of null pointer 2020-01-27 14:51:10 +01:00
lightnvm lightnvm: pblk: fix lock order in pblk_rb_tear_down_check 2020-01-27 14:50:45 +01:00
macintosh
mailbox mailbox: qcom-apcs: fix max_register value 2020-01-27 14:51:14 +01:00
mcb
md dm writecache: fix incorrect flush sequence when doing SSD mode commit 2020-02-11 04:34:04 -08:00
media media: v4l2-core: compat: ignore native command codes 2020-02-11 04:33:56 -08:00
memory memory: tegra: Don't invoke Tegra30+ specific memory timing setup on Tegra20 2020-01-27 14:50:13 +01:00
memstick
message
mfd mfd: axp20x: Mark AXP20X_VBUS_IPSOUT_MGMT as volatile 2020-02-11 04:34:01 -08:00
misc mei: me: add comet point (lake) H device ids 2020-02-01 09:37:04 +00:00
mmc mmc: sdhci-of-at91: fix memleak on clk_get failure 2020-02-11 04:34:00 -08:00
mtd
mux
net brcmfmac: Fix memory leak in brcmf_usbdev_qinit 2020-02-11 04:33:55 -08:00
nfc
ntb ntb_hw_switchtec: potential shift wrapping bug in switchtec_ntb_init_sndev() 2020-01-27 14:50:55 +01:00
nubus
nvdimm
nvme nvme: retain split access workaround for capability reads 2020-01-27 14:51:16 +01:00
nvmem nvmem: imx-ocotp: Change TIMING calculation to u-boot algorithm 2020-01-27 14:50:58 +01:00
of of: Add OF_DMA_DEFAULT_COHERENT & select it on powerpc 2020-02-11 04:34:03 -08:00
opp
oprofile
parisc
parport
pci PCI: keystone: Fix link training retries initiation 2020-02-11 04:34:00 -08:00
pcmcia
perf
phy phy: cpcap-usb: Prevent USB line glitches from waking up modem 2020-02-01 09:37:07 +00:00
pinctrl pinctrl: iproc-gpio: Fix incorrect pinconf configurations 2020-01-27 14:51:12 +01:00
platform platform/x86: intel_scu_ipc: Fix interrupt support 2020-02-11 04:33:57 -08:00
pnp
power power: supply: ltc2941-battery-gauge: fix use-after-free 2020-02-11 04:34:02 -08:00
powercap
pps
ps3
ptp
pwm pwm: meson: Don't disable PWM when setting duty repeatedly 2020-01-27 14:50:47 +01:00
rapidio drivers/rapidio/rio_cm.c: fix potential oops in riocm_ch_listen() 2020-01-27 14:50:31 +01:00
ras
regulator regulator: tps65086: Fix tps65086_ldoa1_ranges for selector 0xB 2020-01-27 14:50:33 +01:00
remoteproc
reset
rpmsg
rtc rtc: pcf2127: bugfix: read rtc disables watchdog 2020-01-27 14:51:07 +01:00
s390 s390/qeth: Fix initialization of vnicc cmd masks during set online 2020-01-27 14:51:18 +01:00
sbus
scsi scsi: qla2xxx: Fix mtcp dump collection failure 2020-02-11 04:34:02 -08:00
sfi
sh
siox
slimbus
sn
soc soc: ti: wkup_m3_ipc: Fix race condition with rproc_boot 2020-02-05 14:43:41 +00:00
soundwire
spi spi: spi-dw: Add lock protect dw_spi rx/tx to prevent concurrent calls 2020-02-01 09:37:08 +00:00
spmi
ssb
staging staging: vt6656: Fix false Tx excessive retries reporting. 2020-02-01 09:37:03 +00:00
target scsi: RDMA/isert: Fix a recently introduced regression related to logout 2020-01-29 16:43:21 +01:00
tc
tee tee: optee: Fix compilation issue with nommu 2020-02-05 14:43:50 +00:00
thermal thermal: cpu_cooling: Actually trace CPU load in thermal_power_cpu_get_power 2020-01-27 14:50:48 +01:00
thunderbolt
tty serial: 8250_bcm2835aux: Fix line mismatch on driver unbind 2020-02-01 09:37:03 +00:00
uio driver: uio: fix possible use-after-free in __uio_register_device 2020-01-27 14:50:17 +01:00
usb usb: gadget: f_ecm: Use atomic_t to track in-flight request 2020-02-11 04:33:56 -08:00
uwb
vfio vfio/mdev: Fix aborting mdev child device removal if one fails 2020-01-27 14:50:46 +01:00
vhost vhost/test: stop device before reset 2020-01-27 14:51:19 +01:00
video backlight: pwm_bl: Fix heuristic to determine number of brightness levels 2020-01-27 14:50:58 +01:00
virt
virtio
visorbus
vlynq
vme
w1
watchdog watchdog: rn5t618_wdt: fix module aliases 2020-02-01 09:37:08 +00:00
xen net: add {READ|WRITE}_ONCE() annotations on ->rskq_accept_head 2020-01-27 14:51:18 +01:00
zorro
Kconfig
Makefile