linux/drivers
Daniel Wagner fa5bfdd93f nvme-fc: do not ignore connectivity loss during connecting
[ Upstream commit ee59e3820c ]

When a connectivity loss occurs while nvme_fc_create_assocation is
being executed, it's possible that the ctrl ends up stuck in the LIVE
state:

  1) nvme nvme10: NVME-FC{10}: create association : ...
  2) nvme nvme10: NVME-FC{10}: controller connectivity lost.
                  Awaiting Reconnect
     nvme nvme10: queue_size 128 > ctrl maxcmd 32, reducing to maxcmd
  3) nvme nvme10: Could not set queue count (880)
     nvme nvme10: Failed to configure AEN (cfg 900)
  4) nvme nvme10: NVME-FC{10}: controller connect complete
  5) nvme nvme10: failed nvme_keep_alive_end_io error=4

A connection attempt starts 1) and the ctrl is in state CONNECTING.
Shortly after the LLDD driver detects a connection lost event and calls
nvme_fc_ctrl_connectivity_loss 2). Because we are still in CONNECTING
state, this event is ignored.

nvme_fc_create_association continues to run in parallel and tries to
communicate with the controller and these commands will fail. Though
these errors are filtered out, e.g in 3) setting the I/O queues numbers
fails which leads to an early exit in nvme_fc_create_io_queues. Because
the number of IO queues is 0 at this point, there is nothing left in
nvme_fc_create_association which could detected the connection drop.
Thus the ctrl enters LIVE state 4).

Eventually the keep alive handler times out 5) but because nothing is
being done, the ctrl stays in LIVE state.

There is already the ASSOC_FAILED flag to track connectivity loss event
but this bit is set too late in the recovery code path. Move this into
the connectivity loss event handler and synchronize it with the state
change. This ensures that the ASSOC_FAILED flag is seen by
nvme_fc_create_io_queues and it does not enter the LIVE state after a
connectivity loss event. If the connectivity loss event happens after we
entered the LIVE state the normal error recovery path is executed.

Signed-off-by: Daniel Wagner <wagi@kernel.org>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-03-22 12:50:40 -07:00
..
accel accel/qaic: Fix the for loop used to walk SG table 2024-11-01 01:58:21 +01:00
accessibility speakup: Fix sizeof() vs ARRAY_SIZE() bug 2024-06-12 11:11:18 +02:00
acpi ACPI: x86: Add skip i2c clients quirk for Vexia EDU ATLA 10 tablet 5V 2025-02-21 13:57:12 +01:00
amba amba: bus: fix refcount leak 2023-08-22 15:50:57 +02:00
android binder: fix UAF caused by offsets overwrite 2024-09-12 11:11:41 +02:00
ata ata: libata-sff: Ensure that we cannot write outside the allocated buffer 2025-02-17 09:40:35 +01:00
atm atm: idt77252: prevent use after free in dequeue_rx() 2024-08-29 17:33:18 +02:00
auxdisplay auxdisplay: ht16k33: Drop reference after LED registration 2024-08-03 08:54:39 +02:00
base drivers: core: fix device leak in __fw_devlink_relax_cycles() 2025-03-13 12:58:37 +01:00
bcma bcma: Add explicit of_device.h include 2023-04-14 15:32:56 +03:00
block zram: fix NULL pointer in comp_algorithm_show() 2025-03-22 12:50:37 -07:00
bluetooth bluetooth: btusb: Initialize .owner field of force_poll_sync_fops 2025-03-13 12:58:28 +01:00
bus bus: mhi: host: pci_generic: Use pci_try_reset_function() to avoid deadlock 2025-03-13 12:58:37 +01:00
cache cache: ax45mp_cache: Align end size to cache boundary in ax45mp_dma_cache_wback() 2024-03-01 13:35:08 +01:00
cdrom cdrom: Avoid barrier_nospec() in cdrom_ioctl_media_changed() 2024-11-01 01:58:25 +01:00
cdx cdx: Fix possible UAF error in driver_override_show() 2025-03-13 12:58:36 +01:00
char char: misc: deallocate static minor in error path 2025-03-13 12:58:37 +01:00
clk clk: mediatek: mt2701-mm: add missing dummy clk 2025-02-17 09:40:20 +01:00
clocksource clockevents/drivers/i8253: Fix stop sequence for timer 0 2025-03-22 12:50:37 -07:00
comedi comedi: Flush partial mappings in error case 2024-12-09 10:32:44 +01:00
connector connector/cn_proc: revert "connector: Fix proc_event_num_listeners count not cleared" 2024-02-23 09:25:01 +01:00
counter counter: ti-ecap-capture: Add check for clk_enable() 2024-12-09 10:32:37 +01:00
cpufreq cpufreq: fix using cpufreq-dt as module 2025-02-27 04:10:45 -08:00
cpuidle cpuidle: riscv-sbi: fix device node release in early exit of for_each_possible_cpu 2025-01-17 13:36:16 +01:00
crypto crypto: qce - unregister previously registered algos in error path 2025-02-17 09:40:35 +01:00
cxl cxl/region: Fix region creation for greater than x2 switches 2024-12-27 13:58:46 +01:00
dax dax: delete a stale directory pmem 2024-12-09 10:32:21 +01:00
dca Mainly singleton patches all over the place. Series of note are: 2023-04-27 19:57:00 -07:00
devfreq PM / devfreq: Synchronize devfreq_monitor_[start/stop] 2024-02-05 20:14:15 +00:00
dio drivers: dio: fix possible memory leak in dio_init() 2022-11-09 15:12:37 +01:00
dma dmaengine: ti: edma: fix OF node reference leaks in edma_driver 2025-02-08 09:52:28 +01:00
dma-buf udmabuf: also check for F_SEAL_FUTURE_WRITE 2024-12-27 13:58:56 +01:00
edac EDAC/qcom: Correct interrupt enable register configuration 2025-02-27 04:10:53 -08:00
eisa EISA: Replace all non-returning strlcpy with strscpy 2023-07-27 10:04:42 -07:00
extcon extcon: max8997: select IRQ_DOMAIN instead of depending on it 2024-06-12 11:12:27 +02:00
firewire firewire: core: correct range of block for case of switch statement 2024-10-04 16:29:28 +02:00
firmware x86/boot: Rename conflicting 'boot_params' pointer to 'boot_params_ptr' 2025-03-13 12:58:40 +01:00
fpga fpga: region: add owner module and take its refcount 2024-06-12 11:12:23 +02:00
fsi fsi: i2cr: Switch to use struct i2c_driver's .probe() 2023-08-22 15:51:33 +02:00
gnss driver core: class: remove module * from class_create() 2023-03-17 15:16:33 +01:00
gpio gpio: rcar: Fix missing of_node_put() call 2025-03-13 12:58:33 +01:00
gpu drm/hyperv: Fix address space leak when Hyper-V DRM device is removed 2025-03-22 12:50:38 -07:00
greybus greybus: Fix use-after-free bug in gb_interface_release due to race condition. 2024-06-21 14:38:48 +02:00
hid HID: hid-steam: Fix use-after-free when detaching device 2025-03-13 12:58:31 +01:00
hsi hsi: omap_ssi: Explicitly include correct DT includes 2023-07-31 23:17:57 +02:00
hte hte: tegra: Fix missing error code in tegra_hte_test_probe() 2023-11-20 11:59:08 +01:00
hv Drivers: hv: vmbus: Don't release fb_mmio resource in vmbus_free_mmio() 2025-03-22 12:50:38 -07:00
hwmon hwmon: fix a NULL vs IS_ERR_OR_NULL() check in xgene_hwmon_probe() 2025-03-13 12:58:30 +01:00
hwspinlock hwspinlock: Introduce hwspin_lock_bust() 2024-09-08 07:54:43 +02:00
hwtracing intel_th: pci: Add Panther Lake-P/U support 2025-03-13 12:58:36 +01:00
i2c i2c: ls2x: Fix frequency division register access 2025-03-07 16:45:46 +01:00
i3c i3c: master: Fix missing 'ret' assignment in set_speed() 2025-02-17 09:40:38 +01:00
idle intel_idle: Handle older CPUs, which stop the TSC in deeper C states, correctly 2025-03-07 16:45:49 +01:00
iio iio: adc: at91-sama5d2_adc: fix sama7g5 realbits value 2025-03-13 12:58:38 +01:00
infiniband RDMA/mlx5: Fix bind QP error cleanup flow 2025-03-07 16:45:37 +01:00
input Input: synaptics - fix crash when enabling pass-through port 2025-02-27 04:10:45 -08:00
interconnect interconnect: icc-clk: Add missed num_nodes initialization 2024-10-04 16:29:40 +02:00
iommu iommu/arm-smmu-v3: Clean up more on probe failure 2025-02-17 09:40:09 +01:00
ipack tty: make tty_operations::write()'s count size_t 2023-08-11 21:12:46 +02:00
irqchip irqchip/apple-aic: Only handle PMC interrupt as FIQ when configured so 2025-02-17 09:40:38 +01:00
isdn mISDN: fix MISDN_TIME_STAMP handling 2024-08-19 06:04:28 +02:00
leds leds: lp8860: Write full EEPROM, not only half of it 2025-02-17 09:40:14 +01:00
macintosh macintosh/therm_windtunnel: fix module unload. 2024-08-03 08:54:02 +02:00
mailbox mailbox: tegra-hsp: Clear mailbox before using message 2025-02-17 09:40:38 +01:00
mcb mcb: fix error handling for different scenarios when parsing 2023-11-28 17:20:05 +00:00
md md: Fix md_seq_ops() regressions 2025-02-27 04:10:53 -08:00
media media: uvcvideo: Remove dangling pointers 2025-02-27 04:10:46 -08:00
memory memory: tegra20-emc: fix an OF node reference bug in tegra_emc_find_node_by_ram_code() 2025-02-08 09:52:14 +01:00
memstick memstick r592: make memstick_debug_get_tpc_name() static 2023-06-12 15:16:19 +02:00
message scsi: fusion: Remove unused variable 'rc' 2024-12-09 10:32:18 +01:00
mfd mfd: lpc_ich: Add another Gemini Lake ISA bridge PCI device-id 2025-02-17 09:40:07 +01:00
misc eeprom: digsy_mtc: Make GPIO lookup table match the device 2025-03-13 12:58:37 +01:00
mmc mmc: mtk-sd: Fix register settings for hs400(es) mode 2025-02-21 13:57:19 +01:00
most staging: most: Replace all non-returning strlcpy with strscpy 2023-06-01 07:07:37 -07:00
mtd mtd: rawnand: cadence: fix incorrect device in dma_unmap_single 2025-02-27 04:10:53 -08:00
mux mux: Explicitly include correct DT includes 2023-08-28 13:36:24 -05:00
net net/mlx5e: Prevent bridge link show failure for non-eswitch-allowed devices 2025-03-22 12:50:40 -07:00
nfc nfc: pn533: Add poll mod list filling check 2024-09-04 13:28:28 +02:00
ntb ntb: ntb_hw_switchtec: Fix use after free vulnerability in switchtec_ntb_remove due to race condition 2024-10-17 15:24:18 +02:00
nubus nubus: Don't list slot resources by default 2023-05-22 13:51:56 +02:00
nvdimm nvdimm: rectify the illogical code within nd_dax_probe() 2024-12-14 20:00:13 +01:00
nvme nvme-fc: do not ignore connectivity loss during connecting 2025-03-22 12:50:40 -07:00
nvmem nvmem: imx-ocotp-ele: fix MAC address byte order 2025-02-27 04:10:47 -08:00
of Revert "of: reserved-memory: Fix using wrong number of cells to get property 'alignment'" 2025-03-13 12:58:22 +01:00
opp OPP: OF: Fix an OF node leak in _opp_add_static_v2() 2025-02-08 09:51:55 +01:00
parisc Revert "change alloc_pages name in dma_map_ops to avoid name conflicts" 2024-09-04 13:28:24 +02:00
parport parport: Proper fix for array out-of-bounds access 2024-10-22 15:46:33 +02:00
pci PCI: switchtec: Add Microchip PCI100X device IDs 2025-02-21 13:57:11 +01:00
pcmcia pcmcia: Use resource_size function on resource object 2024-09-12 11:11:31 +02:00
peci Update peci-next for v6.6-rc1 2023-08-08 10:53:30 +02:00
perf perf/arm-cmn: Ensure port and device id bits are set properly 2024-12-09 10:32:57 +01:00
phy phy: exynos5-usbdrd: fix MPLL_MULTIPLIER and SSC_REFCLKSEL masks in refclk 2025-03-07 16:45:47 +01:00
pinctrl pinctrl: bcm281xx: Fix incorrect regmap max_registers value 2025-03-22 12:50:37 -07:00
platform platform/x86: thinkpad_acpi: Add battery quirk for ThinkPad X131e 2025-03-13 12:58:25 +01:00
pmdomain pmdomain: imx8mp-blk-ctrl: add missing loop break condition 2025-01-23 17:21:17 +01:00
pnp PNP: ACPI: fix fortify warning 2024-02-05 20:14:15 +00:00
power power: supply: da9150-fg: fix potential overflow 2025-02-27 04:10:50 -08:00
powercap powercap: dtpm_devfreq: Fix error check against dev_pm_qos_add_request() 2024-11-01 01:58:31 +01:00
pps pps: Fix a use-after-free 2025-02-08 09:52:38 +01:00
ps3 driver/ps3: Include <video/cmdline.h> for mode parsing 2023-02-20 14:56:51 +01:00
ptp ptp: Ensure info->enable callback is always set 2025-02-17 09:40:41 +01:00
pwm pwm: microchip-core: fix incorrect comparison with max period 2025-02-17 09:40:31 +01:00
rapidio rapidio: fix an API misues when rio_add_net() fails 2025-03-13 12:58:27 +01:00
ras ras/debugfs: Fix error checking for debugfs_create_dir() 2023-05-16 21:12:23 +02:00
regulator regulator: core: Add missing newline character 2025-02-08 09:52:29 +01:00
remoteproc remoteproc: core: Fix ida_free call while not allocated 2025-02-08 09:52:37 +01:00
reset reset: k210: fix OF node leak in probe() error path 2024-10-04 16:29:04 +02:00
rpmsg rpmsg: glink: use only lower 16-bits of param2 for CMD_OPEN name length 2024-12-09 10:32:29 +01:00
rtc rtc: zynqmp: Fix optional clock name property 2025-02-17 09:40:41 +01:00
s390 s390/ism: add release function for struct device 2025-02-27 04:10:48 -08:00
sbus sbus: Explicitly include correct DT includes 2023-08-28 13:36:24 -05:00
scsi scsi: core: Clear driver private data when retrying request 2025-03-07 16:45:37 +01:00
sh sh: intc: Fix use-after-free bug in register_intc_controller() 2024-12-09 10:33:00 +01:00
siox siox: fix possible memory leak in siox_device_add() 2022-11-09 15:40:14 +01:00
slimbus slimbus: messaging: Free transaction ID in delayed interrupt scenario 2025-03-13 12:58:37 +01:00
soc soc: loongson: loongson2_guts: Add check for devm_kstrdup() 2025-02-27 04:10:51 -08:00
soundwire soundwire: cadence: re-check Peripheral status with delayed_work 2024-10-17 15:24:18 +02:00
spi spi-mxs: Fix chipselect glitch 2025-03-13 12:58:40 +01:00
spmi spmi: hisi-spmi-controller: Do not override device identifier 2024-06-21 14:38:40 +02:00
ssb ssb: Fix division by zero issue in ssb_calc_clock_rate 2024-08-29 17:33:22 +02:00
staging staging: media: max96712: fix kernel oops when removing module 2025-02-08 09:52:38 +01:00
target scsi: target: core: Fix null-ptr-deref in target_alloc_device() 2024-11-01 01:58:24 +01:00
tc The main MIPS changes for 5.6: 2020-01-31 11:28:31 -08:00
tee tee: optee: Fix supplicant wait loop 2025-02-27 04:10:51 -08:00
thermal thermal: of: fix OF node leak in of_thermal_zone_find() 2025-01-17 13:36:18 +01:00
thunderbolt thunderbolt: Don't display nvm_version unless upgrade supported 2025-01-09 13:31:49 +01:00
tty serial: 8250: Fix fifo underflow on flush 2025-02-21 13:57:18 +01:00
ufs scsi: ufs: core: Cancel RTC work during ufshcd_remove() 2025-03-07 16:45:57 +01:00
uio Drivers: hv: vmbus: Fix rescind handling in uio_hv_generic 2024-09-12 11:11:41 +02:00
usb usb: xhci: Enable the TRB overfetch quirk on VIA VL805 2025-03-13 12:58:35 +01:00
vdpa vdpa/mlx5: Fix suboptimal range on iotlb iteration 2024-12-09 10:32:30 +01:00
vfio Revert "vfio/platform: check the bounds of read/write syscalls" 2025-02-21 13:57:27 +01:00
vhost vhost/scsi: null-ptr-dereference in vhost_scsi_get_req() 2024-10-10 11:58:08 +02:00
video fbdev: hyperv_fb: iounmap() the correct memory when removing a device 2025-03-22 12:50:37 -07:00
virt drivers: virt: acrn: hsm: Use kzalloc to avoid info leak in pmcmd_ioctl 2025-03-13 12:58:37 +01:00
virtio virtio_ring: fix KMSAN error for premapped mode 2024-09-12 11:11:36 +02:00
vlynq bus: Make remove callback return void 2021-07-21 11:53:42 +02:00
w1 nvmem: add explicit config option to read old syntax fixed OF cells 2024-05-17 12:01:55 +02:00
watchdog watchdog: rti_wdt: Fix an OF node leak in rti_wdt_probe() 2025-02-08 09:52:25 +01:00
xen xen/swiotlb: relax alignment requirements 2025-02-21 13:57:08 +01:00
zorro zorro: Include zorro.h in names.c 2023-08-21 13:27:44 +02:00
Kconfig Merge patch series "Add non-coherent DMA support for AX45MP" 2023-09-08 11:24:34 -07:00
Makefile pmdomain: Rename the genpd subsystem to pmdomain 2023-09-13 11:09:21 +02:00