Ilya Dryomov
46c0fa486b
rbd: don't assume RBD_LOCK_STATE_LOCKED for exclusive mappings
...
commit 2237ceb71f89837ac47c5dce2aaa2c2b3a337a3c upstream.
Every time a watch is reestablished after getting lost, we need to
update the cookie which involves quiescing exclusive lock. For this,
we transition from RBD_LOCK_STATE_LOCKED to RBD_LOCK_STATE_QUIESCING
roughly for the duration of rbd_reacquire_lock() call. If the mapping
is exclusive and I/O happens to arrive in this time window, it's failed
with EROFS (later translated to EIO) based on the wrong assumption in
rbd_img_exclusive_lock() -- "lock got released?" check there stopped
making sense with commit a2b1da0979 ("rbd: lock should be quiesced on
reacquire").
To make it worse, any such I/O is added to the acquiring list before
EROFS is returned and this sets up for violating rbd_lock_del_request()
precondition that the request is either on the running list or not on
any list at all -- see commit ded080c86b3f ("rbd: don't move requests
to the running list on errors"). rbd_lock_del_request() ends up
processing these requests as if they were on the running list which
screws up quiescing_wait completion counter and ultimately leads to
rbd_assert(!completion_done(&rbd_dev->quiescing_wait));
being triggered on the next watch error.
Cc: stable@vger.kernel.org # 06ef84c4e9c4: rbd: rename RBD_LOCK_STATE_RELEASING and releasing_wait
Cc: stable@vger.kernel.org
Fixes: 637cd06053 ("rbd: new exclusive lock wait/wake code")
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Dongsheng Yang <dongsheng.yang@easystack.cn>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-08-19 05:33:40 +02:00
..
accessibility
acpi
ACPI: processor_idle: Fix invalid comparison with insertion sort for latency
2024-07-27 10:38:32 +02:00
amba
amba: bus: fix refcount leak
2023-09-23 10:59:52 +02:00
android
binder: fix hang of unregistered readers
2024-08-19 05:33:37 +02:00
ata
ata: libata-core: Fix double free on error
2024-07-05 09:08:31 +02:00
atm
atm: idt77252: fix a memleak in open_card_ubr0
2024-02-23 08:25:06 +01:00
auxdisplay
base
drivers: core: synchronize really_probe() and dev_uevent()
2024-07-05 09:08:18 +02:00
bcma
block
rbd: don't assume RBD_LOCK_STATE_LOCKED for exclusive mappings
2024-08-19 05:33:40 +02:00
bluetooth
Bluetooth: ath3k: Fix multiple issues reported by checkpatch.pl
2024-07-05 09:08:21 +02:00
bus
bus: tegra-aconnect: Update dependency to ARCH_TEGRA
2024-03-26 18:22:15 -04:00
cdrom
char
hwrng: amd - Convert PCIBIOS_* return codes to errnos
2024-08-19 05:33:37 +02:00
clk
clk: davinci: da8xx-cfgchip: Initialize clk_init_data before use
2024-08-19 05:33:37 +02:00
clocksource
clocksource/drivers/timer-atmel-tcb: Fix initialization on SAM9 hardware
2023-11-28 16:50:13 +00:00
connector
counter
cpufreq
cpufreq: exit() callback is optional
2024-06-16 13:28:34 +02:00
cpuidle
crypto
crypto: qat - Fix ADF_DEV_RESET_SYNC memory leak
2024-06-16 13:28:51 +02:00
dax
dca
devfreq
PM / devfreq: Fix leak in devfreq_dev_release()
2023-09-23 10:59:54 +02:00
dio
dma
dmaengine: ioatdma: Fix missing kmem_cache_destroy()
2024-07-05 09:08:23 +02:00
dma-buf
dma-buf/sw-sync: don't enable IRQ from sync_print_obj()
2024-06-16 13:28:47 +02:00
edac
EDAC, i10nm: make skx_common.o a separate module
2024-08-19 05:33:25 +02:00
eisa
extcon
extcon: max8997: select IRQ_DOMAIN instead of depending on it
2024-06-16 13:28:43 +02:00
firewire
firewire: nosy: ensure user_length is taken into account when fetching packet contents
2024-05-17 11:43:54 +02:00
firmware
firmware: turris-mox-rwtm: Initialize completion before mailbox
2024-08-19 05:33:28 +02:00
fpga
fsi
fsi: master-ast-cf: Add MODULE_FIRMWARE macro
2023-09-23 10:59:37 +02:00
gnss
gpio
gpio: davinci: Validate the obtained number of IRQs
2024-07-05 09:08:28 +02:00
gpu
drm/panfrost: Mark simple_ondemand governor as softdep
2024-08-19 05:33:39 +02:00
greybus
greybus: Fix use-after-free bug in gb_interface_release due to race condition.
2024-07-05 09:08:20 +02:00
hid
HID: logitech-dj: Fix memory leak in logi_dj_recv_switch_to_dj_mode()
2024-07-05 09:08:16 +02:00
hsi
hv
hv_utils: drain the timesync packets on onchannelcallback
2024-07-05 09:08:20 +02:00
hwmon
hwmon: (max6697) Fix swapped temp{1,8} critical alarms
2024-08-19 05:33:26 +02:00
hwspinlock
hwtracing
intel_th: pci: Add Lunar Lake support
2024-07-05 09:08:19 +02:00
i2c
i2c: rcar: bring hardware to known state when probing
2024-07-18 11:40:56 +02:00
i3c
i3c: master: cdns: Update maximum prescaler value for i2c clock
2024-02-23 08:25:02 +01:00
ide
idle
iio
iio: chemical: bme680: Fix sensor data read operation
2024-07-05 09:08:29 +02:00
infiniband
RDMA/iwcm: Fix a use-after-free related to destroying CM IDs
2024-08-19 05:33:39 +02:00
input
Input: elan_i2c - do not leave interrupt disabled on suspend failure
2024-08-19 05:33:33 +02:00
interconnect
interconnect: Treat xlate() returning NULL node as an error
2024-01-08 11:29:45 +01:00
iommu
iommu/amd: Fix sysfs leak in iommu init
2024-07-05 09:08:16 +02:00
ipack
irqchip
irqchip/alpine-msi: Fix off-by-one in allocation error path
2024-06-16 13:28:34 +02:00
isdn
leds
leds: ss4200: Convert PCIBIOS_* return codes to errnos
2024-08-19 05:33:37 +02:00
lightnvm
macintosh
macintosh/therm_windtunnel: fix module unload.
2024-08-19 05:33:34 +02:00
mailbox
mcb
mcb: fix error handling for different scenarios when parsing
2023-11-28 16:50:19 +00:00
md
md/raid5: fix deadlock that raid5d() wait for itself to clear MD_SB_CHANGE_PENDING
2024-06-16 13:28:50 +02:00
media
media: venus: fix use after free in vdec_close
2024-08-19 05:33:35 +02:00
memory
memstick
message
mfd
mfd: omap-usb-tll: Use struct_size to allocate tll
2024-08-19 05:33:32 +02:00
misc
mei: demote client disconnect warning on suspend to debug
2024-07-27 10:38:29 +02:00
mmc
mmc: sdhci: Do not lock spinlock around mmc_gpio_get_ro()
2024-07-05 09:08:29 +02:00
mtd
ubi: eba: properly rollback inside self_check_eba
2024-08-19 05:33:38 +02:00
mux
net
wifi: mwifiex: Fix interface type change
2024-08-19 05:33:36 +02:00
nfc
NFC: trf7970a: disable all regulators on removal
2024-05-02 16:18:33 +02:00
ntb
ntb: Fix calculation ntb_transport_tx_free_entry()
2023-09-23 10:59:55 +02:00
nubus
nvdimm
nd_btt: Make BTT lanes preemptible
2023-11-20 10:30:12 +01:00
nvme
nvme-multipath: find NUMA path only for online numa-node
2024-07-18 11:40:52 +02:00
nvmem
nvmem: meson-efuse: Fix return value of nvmem callbacks
2024-07-18 11:40:55 +02:00
of
of: gpio unittest kfree() wrong object
2024-02-23 08:25:15 +01:00
opp
OPP: Fix passing 0 to PTR_ERR in _opp_attach_genpd()
2023-09-23 10:59:40 +02:00
oprofile
parisc
parisc: iosapic.c: Fix sparse warnings
2023-10-10 21:46:39 +02:00
parport
parport: parport_serial: Add Brainboxes device IDs and geometry
2024-01-25 14:34:21 -08:00
pci
PCI: hv: Return zero, not garbage, when reading PCI_INTERRUPT_PIN
2024-08-19 05:33:37 +02:00
pcmcia
pcmcia: ds: fix possible name leak in error path in pcmcia_device_add()
2023-11-20 10:30:14 +01:00
perf
perf/smmuv3: Enable HiSilicon Erratum 162001900 quirk for HIP08/09
2023-09-23 11:00:03 +02:00
phy
phy: ti: phy-omap-usb2: Fix NULL pointer dereference for SRP
2024-02-23 08:25:06 +01:00
pinctrl
pinctrl: freescale: mxs: Fix refcount of child
2024-08-19 05:33:34 +02:00
platform
platform: mips: cpu_hwmon: Disable driver on unsupported hardware
2024-08-19 05:33:39 +02:00
pnp
PNP: ACPI: fix fortify warning
2024-02-23 08:24:54 +01:00
power
power: rt9455: hide unused rt9455_boost_voltage_values
2024-05-17 11:43:48 +02:00
powercap
pps
ps3
ptp
ptp: Fix error message on failed pin verification
2024-07-05 09:08:11 +02:00
pwm
pwm: stm32: Always do lazy disabling
2024-08-19 05:33:26 +02:00
rapidio
ras
regulator
regulator: core: Fix modpost error "regulator_get_regmap" undefined
2024-07-05 09:08:23 +02:00
remoteproc
reset
reset: hisilicon: hi6220: fix Wvoid-pointer-to-enum-cast warning
2024-01-25 14:34:20 -08:00
rpmsg
rpmsg: virtio: Free driver_override when rpmsg_remove()
2024-02-23 08:24:48 +01:00
rtc
rtc: isl1208: Fix return value of nvmem callbacks
2024-08-19 05:33:39 +02:00
s390
s390/sclp: Fix sclp_init() cleanup on failure
2024-07-27 10:38:31 +02:00
sbus
scsi
scsi: qla2xxx: validate nvme_local_port correctly
2024-08-19 05:33:38 +02:00
sfi
sh
siox
slimbus
slimbus: core: Remove usage of the deprecated ida_simple_xx() API
2024-04-13 12:51:26 +02:00
soc
soc: ti: wkup_m3_ipc: Send NULL dummy message instead of pointer message
2024-07-05 09:08:28 +02:00
soundwire
soundwire: cadence: fix invalid PDI offset
2024-06-16 13:28:41 +02:00
spi
spi: imx: Don't expect DMA for i.MX{25,35,50,51,53} cspi devices
2024-07-27 10:38:32 +02:00
spmi
ssb
staging
wifi: wilc1000: fix ies_len type in connect path
2024-07-18 11:40:50 +02:00
target
scsi: target: Fix SELinux error when systemd-modules loads the target module
2024-05-17 11:43:51 +02:00
tc
tee
thermal
thermal: core: prevent potential string overflow
2023-11-20 10:30:09 +01:00
thunderbolt
tty
tty: mcf: MCF54418 has 10 UARTS
2024-07-05 09:08:30 +02:00
uio
uio: Fix use-after-free in uio_open
2024-01-25 14:34:21 -08:00
usb
USB: move snd_usb_pipe_sanity_check into the USB core
2024-08-19 05:33:30 +02:00
vfio
vfio/platform: Create persistent IRQ handlers
2024-04-13 12:51:34 +02:00
vhost
vhost: Add smp_rmb() in vhost_vq_avail_empty()
2024-05-02 16:18:29 +02:00
video
fbdev: savage: Handle err return when savagefb_check_var failed
2024-06-16 13:28:50 +02:00
virt
virtio
virtio: delete vq in vp_find_vqs_msix() when request_irq() fails
2024-06-16 13:28:46 +02:00
visorbus
vlynq
vme
w1
watchdog
watchdog: stm32_iwdg: initialize default timeout
2024-03-26 18:22:24 -04:00
xen
xen/events: close evtchn after mapping cleanup
2024-04-13 12:51:29 +02:00
zorro
Kconfig
Makefile