linux-mainline/drivers/scsi
Justin Tee dae40be7a1 scsi: lpfc: Prevent use-after-free during rmmod with mapped NVMe rports
During rmmod, when dev_loss_tmo callback is called, an ndlp kref count is
decremented twice.  Once for SCSI transport registration and second to
remove the initial node allocation kref.  If there is also an NVMe
transport registration, another reference count decrement is expected in
lpfc_nvme_unregister_port().

Race conditions between the NVMe transport remoteport_delete and
dev_loss_tmo callbacks sometimes results in premature ndlp object release
resulting in use-after-free issues.

Fix by not dropping the ndlp object in dev_loss_tmo callback with an
outstanding NVMe transport registration.  Inversely, mark the final
NLP_DROPPED flag in lpfc_nvme_unregister_port when rmmod flag is set.

Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Link: https://lore.kernel.org/r/20230908211923.37603-1-justintee8345@gmail.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2023-09-13 20:51:16 -04:00
..
aacraid Merge branch '6.5/scsi-fixes' into 6.6/scsi-staging 2023-08-30 20:56:24 -04:00
aic7xxx scsi: aic7xxx: Fix firmware build fatal error 2023-07-31 11:28:55 -04:00
aic94xx scsi: libsas: Delete sas_ata_task.retry_count 2023-08-21 17:50:59 -04:00
arcmsr scsi: arcmsr: Add __init and __exit for arcmsr_module_{init,exit}() 2023-08-21 16:27:10 -04:00
arm
be2iscsi scsi: be2iscsi: Add length check when parsing nlattrs 2023-07-25 21:49:32 -04:00
bfa scsi: bfa: Replace one-element array with flexible-array member in struct fc_rscn_pl_s 2023-08-21 17:13:56 -04:00
bnx2fc
bnx2i scsi: bnx2i: Replace all non-returning strlcpy with strscpy 2023-05-26 13:52:19 -07:00
csiostor
cxgbi Networking changes for 6.4. 2023-04-26 16:07:23 -07:00
cxlflash Driver core changes for 6.4-rc1 2023-04-27 11:53:57 -07:00
device_handler
elx scsi: elx: sli4: Remove code duplication 2023-08-21 17:13:56 -04:00
esas2r modules-6.4-rc1 2023-04-27 16:36:55 -07:00
fcoe scsi: fcoe: Fix potential deadlock on &fip->ctlr_lock 2023-08-21 17:13:56 -04:00
fnic scsi: fnic: Remove unused functions fnic_scsi_host_start/end_tag() 2023-08-30 21:11:40 -04:00
hisi_sas ata changes for 6.6 2023-09-05 12:37:28 -07:00
ibmvscsi scsi: ibmvscsi: Replace all non-returning strlcpy with strscpy 2023-05-26 13:52:18 -07:00
ibmvscsi_tgt
isci Merge patch series "libsas: Some tidy-up" 2023-08-24 21:06:16 -04:00
libfc
libsas SCSI misc on 20230909 2023-09-09 12:01:33 -07:00
lpfc scsi: lpfc: Prevent use-after-free during rmmod with mapped NVMe rports 2023-09-13 20:51:16 -04:00
megaraid scsi: megaraid_sas: Fix deadlock on firmware crashdump 2023-09-05 05:23:40 -04:00
mpi3mr scsi: mpi3mr: Update driver version to 8.5.0.0.0 2023-08-07 21:41:48 -04:00
mpt3sas scsi: mpt3sas: Remove volatile qualifier 2023-08-30 21:39:06 -04:00
mvsas scsi: libsas: Delete sas_ssp_task.task_prio 2023-08-21 17:50:58 -04:00
pcmcia scsi: Add HAS_IOPORT dependencies 2023-05-31 19:59:26 -04:00
pm8001 scsi: pm8001: Setup IRQs on resume 2023-09-13 20:08:40 -04:00
qedf scsi: qedf: Add synchronization between I/O completions and abort 2023-09-05 05:57:49 -04:00
qedi Merge branch '6.5/scsi-fixes' into 6.6/scsi-staging 2023-08-30 20:56:24 -04:00
qla2xxx scsi: qla2xxx: Fix NULL vs IS_ERR() bug for debugfs_create_dir() 2023-09-05 05:50:36 -04:00
qla4xxx scsi: qla4xxx: Add length check when parsing nlattrs 2023-07-25 21:51:04 -04:00
smartpqi Merge patch series "smartpqi updates" 2023-08-24 22:58:36 -04:00
snic scsi: snic: Fix double free in snic_tgt_create() 2023-08-24 22:30:32 -04:00
sym53c8xx_2 scsi: sym53c8xx: Replace all non-returning strlcpy() with strscpy() 2023-05-31 18:04:30 -04:00
.gitignore
3w-9xxx.c scsi: 3w-9xxx: Replace all non-returning strlcpy with strscpy 2023-05-26 13:52:19 -07:00
3w-9xxx.h
3w-sas.c
3w-sas.h
3w-xxxx.c scsi: 3w-xxxx: Add error handling for initialization failure in tw_probe() 2023-05-22 17:31:56 -04:00
3w-xxxx.h
53c700_d.h_shipped
53c700.c scsi: 53c700: Check that command slot is not NULL 2023-07-31 14:38:17 -04:00
53c700.h
53c700.scr
a100u2w.c
a100u2w.h
a2091.c
a2091.h
a3000.c
a3000.h
a4000t.c
advansys.c
aha152x.c
aha152x.h
aha1542.c
aha1542.h
aha1740.c
aha1740.h
am53c974.c
atari_scsi.c
atp870u.c
atp870u.h
BusLogic.c
BusLogic.h
bvme6000_scsi.c
ch.c scsi: replace the fmode_t argument to scsi_ioctl with a simple bool 2023-06-12 08:04:04 -06:00
constants.c
dc395x.c
dc395x.h
dmx3191d.c
esp_scsi.c
esp_scsi.h
fdomain_isa.c
fdomain_pci.c
fdomain.c
fdomain.h
FlashPoint.c
g_NCR5380.c
gvp11.c scsi: gvp11: Remove unused gvp11_setup() function 2023-08-21 16:37:11 -04:00
gvp11.h
hosts.c scsi: core: Use 32-bit hostnum in scsi_host_lookup() 2023-08-21 16:42:03 -04:00
hpsa_cmd.h
hpsa.c Merge patch series "Constify most SCSI host templates" 2023-03-24 20:13:03 -04:00
hpsa.h
hptiop.c overflow: Add struct_size_t() helper 2023-05-26 13:52:19 -07:00
hptiop.h
imm.c
imm.h
initio.c
initio.h
ipr.c scsi: ipr: Remove several unused variables 2023-04-24 23:11:47 -04:00
ipr.h scsi: ipr: Remove SATA support 2023-04-18 23:01:23 -04:00
ips.c
ips.h
iscsi_boot_sysfs.c
iscsi_tcp.c scsi: iscsi_tcp: Use sendmsg(MSG_SPLICE_PAGES) rather than sendpage 2023-06-24 15:50:13 -07:00
iscsi_tcp.h scsi: iscsi_tcp: Use sendmsg(MSG_SPLICE_PAGES) rather than sendpage 2023-06-24 15:50:13 -07:00
jazz_esp.c
Kconfig scsi: ppa: Add a module parameter for the transfer mode 2023-08-21 16:32:40 -04:00
lasi700.c
libiscsi_tcp.c
libiscsi.c
mac53c94.c
mac53c94.h
mac_esp.c
mac_scsi.c
Makefile
megaraid.c scsi: megaraid: Fix mega_cmd_done() CMDID_INT_CMDS 2023-03-24 20:27:17 -04:00
megaraid.h
mesh.c
mesh.h
mvme16x_scsi.c
mvme147.c
mvme147.h
mvumi.c scsi: core: Improve type safety of scsi_rescan_device() 2023-08-24 22:11:29 -04:00
mvumi.h
myrb.c
myrb.h
myrs.c
myrs.h
ncr53c8xx.c scsi: ncr53c8xx: Replace strlcpy() with strscpy() 2023-06-21 21:13:00 -04:00
ncr53c8xx.h
NCR5380.c scsi: NCR5380: Use default @max_active for hostdata->work_q 2023-05-22 15:13:03 -10:00
NCR5380.h
nsp32_debug.c
nsp32_io.h
nsp32.c
nsp32.h
pmcraid.c scsi: pmcraid: Use pci_dev_id() to simplify the code 2023-08-21 17:13:56 -04:00
pmcraid.h
ppa.c scsi: ppa: Fix accidentally reversed conditions for 16-bit and 32-bit EPP 2023-09-05 05:26:49 -04:00
ppa.h scsi: ppa: Add a module parameter for the transfer mode 2023-08-21 16:32:40 -04:00
ps3rom.c
qla1280.c
qla1280.h
qlogicfas408.c
qlogicfas408.h
qlogicfas.c
qlogicpti.c scsi: qlogicpti: Mark qlogicpti_info() static 2023-08-21 16:37:11 -04:00
qlogicpti.h
raid_class.c scsi: core: raid_class: Remove raid_component_add() 2023-08-24 21:34:28 -04:00
script_asm.pl
scsi_bsg.c scsi: replace the fmode_t argument to ->sg_io_fn with a simple bool 2023-06-12 08:04:04 -06:00
scsi_common.c scsi: core: Use min() instead of open-coding it 2023-05-31 11:05:34 -04:00
scsi_debug.c scsi: scsi_debug: Remove dead code 2023-07-05 21:37:43 -04:00
scsi_debugfs.c scsi: core: Report error list information in debugfs 2023-08-24 22:13:03 -04:00
scsi_debugfs.h
scsi_devinfo.c
scsi_dh.c
scsi_error.c scsi: sd: Handle read/write CDL timeout failures 2023-05-22 17:05:19 -04:00
scsi_ioctl.c scsi: replace the fmode_t argument to scsi_ioctl with a simple bool 2023-06-12 08:04:04 -06:00
scsi_lib_dma.c
scsi_lib.c SCSI misc on 20230909 2023-09-09 12:01:33 -07:00
scsi_logging.c
scsi_logging.h
scsi_netlink.c
scsi_pm.c
scsi_priv.h scsi: core: Improve type safety of scsi_rescan_device() 2023-08-24 22:11:29 -04:00
scsi_proc.c scsi: core: Fix legacy /proc parsing buffer overflow 2023-07-31 15:39:39 -04:00
scsi_sas_internal.h
scsi_scan.c scsi: core: Improve type safety of scsi_rescan_device() 2023-08-24 22:11:29 -04:00
scsi_sysctl.c scsi: simplify sysctl registration with register_sysctl() 2023-04-13 11:49:20 -07:00
scsi_sysfs.c scsi: core: Improve type safety of scsi_rescan_device() 2023-08-24 22:11:29 -04:00
scsi_trace.c
scsi_transport_api.h
scsi_transport_fc.c scsi: core: Replace scsi_target_block() with scsi_block_targets() 2023-06-16 12:19:59 -04:00
scsi_transport_iscsi.c scsi: iscsi: Add strlen() check in iscsi_if_set{_host}_param() 2023-07-25 21:48:13 -04:00
scsi_transport_sas.c scsi: core: Support retrieving sub-pages of mode pages 2023-05-22 17:05:19 -04:00
scsi_transport_spi.c
scsi_transport_srp.c scsi: core: Replace scsi_target_block() with scsi_block_targets() 2023-06-16 12:19:59 -04:00
scsi.c scsi: core: Simplify scsi_cdl_check_cmd() 2023-06-28 21:47:09 -04:00
scsicam.c
sd_dif.c
sd_trace.h
sd_zbc.c scsi: sd_zbc: Set zone limits before revalidating zones 2023-07-05 21:58:10 -04:00
sd.c SCSI misc on 20230909 2023-09-09 12:01:33 -07:00
sd.h
sense_codes.h
ses.c Driver core changes for 6.4-rc1 2023-04-27 11:53:57 -07:00
sg.c scsi: sg: Fix checking return value of blk_get_queue() 2023-07-19 23:12:13 -04:00
sgiwd93.c
sim710.c
sni_53c710.c
sr_ioctl.c
sr_vendor.c
sr.c SCSI misc on 20230629 2023-06-30 11:57:07 -07:00
sr.h
st_options.h
st.c scsi: st: Add third party poweron reset handling 2023-08-24 22:16:28 -04:00
st.h
stex.c scsi: stex: Fix gcc 13 warnings 2023-05-31 11:36:40 -04:00
storvsc_drv.c Merge branch '6.5/scsi-fixes' into 6.6/scsi-staging 2023-08-30 20:56:24 -04:00
sun3_scsi_vme.c
sun3_scsi.c
sun3x_esp.c
sun_esp.c scsi: sun_esp: Explicitly include correct DT includes 2023-07-23 15:49:41 -04:00
virtio_scsi.c scsi: core: Improve type safety of scsi_rescan_device() 2023-08-24 22:11:29 -04:00
vmw_pvscsi.c
vmw_pvscsi.h
wd33c93.c
wd33c93.h
wd719x.c scsi: wd719x: Declare SCSI host template const 2023-03-24 19:19:59 -04:00
wd719x.h
xen-scsifront.c scsi: xen-scsifront: shost_priv() can never return NULL 2023-08-24 22:06:44 -04:00
zalon.c
zorro7xx.c
zorro_esp.c