linux-stable/drivers/scsi
John Meneghini bf2bd892a0 scsi: bnx2fc: Flush destroy_work queue before calling bnx2fc_interface_put()
commit 847f9ea4c5 upstream.

The bnx2fc_destroy() functions are removing the interface before calling
destroy_work. This results multiple WARNings from sysfs_remove_group() as
the controller rport device attributes are removed too early.

Replace the fcoe_port's destroy_work queue. It's not needed.

The problem is easily reproducible with the following steps.

Example:

  $ dmesg -w &
  $ systemctl enable --now fcoe
  $ fipvlan -s -c ens2f1
  $ fcoeadm -d ens2f1.802
  [  583.464488] host2: libfc: Link down on port (7500a1)
  [  583.472651] bnx2fc: 7500a1 - rport not created Yet!!
  [  583.490468] ------------[ cut here ]------------
  [  583.538725] sysfs group 'power' not found for kobject 'rport-2:0-0'
  [  583.568814] WARNING: CPU: 3 PID: 192 at fs/sysfs/group.c:279 sysfs_remove_group+0x6f/0x80
  [  583.607130] Modules linked in: dm_service_time 8021q garp mrp stp llc bnx2fc cnic uio rpcsec_gss_krb5 auth_rpcgss nfsv4 ...
  [  583.942994] CPU: 3 PID: 192 Comm: kworker/3:2 Kdump: loaded Not tainted 5.14.0-39.el9.x86_64 #1
  [  583.984105] Hardware name: HP ProLiant DL120 G7, BIOS J01 07/01/2013
  [  584.016535] Workqueue: fc_wq_2 fc_rport_final_delete [scsi_transport_fc]
  [  584.050691] RIP: 0010:sysfs_remove_group+0x6f/0x80
  [  584.074725] Code: ff 5b 48 89 ef 5d 41 5c e9 ee c0 ff ff 48 89 ef e8 f6 b8 ff ff eb d1 49 8b 14 24 48 8b 33 48 c7 c7 ...
  [  584.162586] RSP: 0018:ffffb567c15afdc0 EFLAGS: 00010282
  [  584.188225] RAX: 0000000000000000 RBX: ffffffff8eec4220 RCX: 0000000000000000
  [  584.221053] RDX: ffff8c1586ce84c0 RSI: ffff8c1586cd7cc0 RDI: ffff8c1586cd7cc0
  [  584.255089] RBP: 0000000000000000 R08: 0000000000000000 R09: ffffb567c15afc00
  [  584.287954] R10: ffffb567c15afbf8 R11: ffffffff8fbe7f28 R12: ffff8c1486326400
  [  584.322356] R13: ffff8c1486326480 R14: ffff8c1483a4a000 R15: 0000000000000004
  [  584.355379] FS:  0000000000000000(0000) GS:ffff8c1586cc0000(0000) knlGS:0000000000000000
  [  584.394419] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
  [  584.421123] CR2: 00007fe95a6f7840 CR3: 0000000107674002 CR4: 00000000000606e0
  [  584.454888] Call Trace:
  [  584.466108]  device_del+0xb2/0x3e0
  [  584.481701]  device_unregister+0x13/0x60
  [  584.501306]  bsg_unregister_queue+0x5b/0x80
  [  584.522029]  bsg_remove_queue+0x1c/0x40
  [  584.541884]  fc_rport_final_delete+0xf3/0x1d0 [scsi_transport_fc]
  [  584.573823]  process_one_work+0x1e3/0x3b0
  [  584.592396]  worker_thread+0x50/0x3b0
  [  584.609256]  ? rescuer_thread+0x370/0x370
  [  584.628877]  kthread+0x149/0x170
  [  584.643673]  ? set_kthread_struct+0x40/0x40
  [  584.662909]  ret_from_fork+0x22/0x30
  [  584.680002] ---[ end trace 53575ecefa942ece ]---

Link: https://lore.kernel.org/r/20220115040044.1013475-1-jmeneghi@redhat.com
Fixes: 0cbf32e168 ("[SCSI] bnx2fc: Avoid calling bnx2fc_if_destroy with unnecessary locks")
Tested-by: Guangwu Zhang <guazhang@redhat.com>
Co-developed-by: Maurizio Lombardi <mlombard@redhat.com>
Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
Signed-off-by: John Meneghini <jmeneghi@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-02-01 17:24:36 +01:00
..
aacraid scsi: aacraid: Fix error handling paths in aac_probe_one() 2020-10-01 13:17:56 +02:00
aic7xxx scsi: aic7xxx: Fix unintentional sign extension issue on left shift of u8 2021-07-25 14:35:12 +02:00
aic94xx scsi: libsas: Add LUN number check in .slave_alloc callback 2021-07-25 14:35:13 +02:00
arcmsr
arm scsi: eesox: Fix different dev_id between request_irq() and free_irq() 2020-08-19 08:16:09 +02:00
be2iscsi scsi: be2iscsi: Fix an error handling path in beiscsi_dev_probe() 2021-07-20 16:10:53 +02:00
bfa scsi: bfa: Fix error return in bfad_pci_init() 2020-10-29 09:57:57 +01:00
bnx2fc scsi: bnx2fc: Flush destroy_work queue before calling bnx2fc_interface_put() 2022-02-01 17:24:36 +01:00
bnx2i scsi: iscsi: Fix shost->max_id use 2021-07-20 16:10:43 +02:00
csiostor scsi: csiostor: Uninitialized data in csio_ln_vnp_read_cbfn() 2021-11-17 09:48:43 +01:00
cxgbi scsi: iscsi: Fix shost->max_id use 2021-07-20 16:10:43 +02:00
cxlflash scsi: cxlflash: Fix error return code in cxlflash_probe() 2020-10-01 13:18:02 +02:00
device_handler scsi: scsi_dh_rdac: Avoid crash during rdac_bus_attach() 2021-08-26 08:36:14 -04:00
dpt
esas2r scsi: esas2r: unlock on error in esas2r_nvram_read_direct() 2020-01-23 08:22:58 +01:00
fcoe scsi: fcoe: Memory leak fix in fcoe_sysfs_fcf_del() 2020-09-03 11:26:47 +02:00
fnic scsi: fnic: Fix memleak in vnic_dev_init_devcmd2 2021-02-07 15:35:48 +01:00
hisi_sas scsi: libsas: Add LUN number check in .slave_alloc callback 2021-07-25 14:35:13 +02:00
ibmvscsi scsi: ibmvfc: Fix invalid state machine BUG_ON() 2021-05-14 09:44:25 +02:00
ibmvscsi_tgt
isci scsi: libsas: Add LUN number check in .slave_alloc callback 2021-07-25 14:35:13 +02:00
libfc scsi: libfc: Fix array index out of bound exception 2021-07-25 14:35:13 +02:00
libsas scsi: libsas: Add LUN number check in .slave_alloc callback 2021-07-25 14:35:13 +02:00
lpfc scsi: lpfc: Trigger SLI4 firmware dump before doing driver cleanup 2022-01-27 09:19:48 +01:00
megaraid scsi: megaraid_mm: Fix end of loop tests for list_for_each_entry() 2021-08-26 08:36:14 -04:00
mpt3sas scsi: mpt3sas: Fix kernel panic during drive powercycle test 2021-12-01 09:23:32 +01:00
mvsas scsi: libsas: Add LUN number check in .slave_alloc callback 2021-07-25 14:35:13 +02:00
pcmcia scsi: fdomain: Fix error return code in fdomain_probe() 2021-09-22 12:26:24 +02:00
pm8001 scsi: libsas: Add LUN number check in .slave_alloc callback 2021-07-25 14:35:13 +02:00
qedf scsi: qedf: Fix error codes in qedf_alloc_global_queues() 2021-09-22 12:26:24 +02:00
qedi scsi: qedi: Fix error codes in qedi_alloc_global_queues() 2021-09-22 12:26:24 +02:00
qla2xxx scsi: qla2xxx: Turn off target reset during issue_lip 2021-11-17 09:48:46 +01:00
qla4xxx scsi: qla4xxx: Fix an error handling path in 'qla4xxx_get_host_stats()' 2020-10-29 09:57:36 +01:00
smartpqi scsi: smartpqi: Fix an error code in pqi_get_raid_map() 2021-09-22 12:26:24 +02:00
snic
sym53c8xx_2 scsi: sym53c8xx_2: remove redundant assignment to retv 2019-08-12 21:58:07 -04:00
ufs scsi: ufs: Fix race conditions related to driver data 2022-01-27 09:19:38 +01:00
.gitignore
3w-9xxx.c
3w-9xxx.h
3w-sas.c
3w-sas.h
3w-xxxx.c
3w-xxxx.h
53c700.c
53c700.h
53c700.scr
53c700_d.h_shipped
a100u2w.c
a100u2w.h
a2091.c
a2091.h
a3000.c
a3000.h
a4000t.c
advansys.c scsi: advansys: Fix kernel pointer leak 2021-11-26 10:47:15 +01:00
aha152x.c
aha152x.h
aha1542.c
aha1542.h
aha1740.c
aha1740.h
am53c974.c
atari_scsi.c scsi: atari_scsi: sun3_scsi: Set sg_tablesize to 1 instead of SG_NONE 2020-01-04 19:18:10 +01:00
atp870u.c
atp870u.h
BusLogic.c scsi: BusLogic: Fix missing pr_cont() use 2021-09-22 12:26:37 +02:00
BusLogic.h scsi: BusLogic: Fix 64-bit system enumeration error for Buslogic 2021-06-03 08:59:11 +02:00
bvme6000_scsi.c
ch.c scsi: ch: Make it possible to open a ch device multiple times again 2019-10-09 23:39:35 -04:00
constants.c
dc395x.c scsi: dc395: Fix error case unwinding 2021-11-17 09:48:41 +01:00
dc395x.h
dmx3191d.c
dpt_i2o.c
dpti.h
esp_scsi.c
esp_scsi.h
fdomain.c
fdomain.h
fdomain_isa.c
fdomain_pci.c
FlashPoint.c scsi: FlashPoint: Rename si_flags field 2021-07-14 16:53:41 +02:00
g_NCR5380.c
gdth.c
gdth.h
gdth_ioctl.h
gdth_proc.c
gdth_proc.h
gvp11.c
gvp11.h
hosts.c scsi: core: Fix shost->cmd_per_lun calculation in scsi_add_host_with_dma() 2021-10-27 09:54:29 +02:00
hpsa.c scsi: hpsa: Fix memory leak in hpsa_init_one() 2020-11-18 19:20:22 +01:00
hpsa.h
hpsa_cmd.h
hptiop.c
hptiop.h
imm.c
imm.h
initio.c
initio.h
ipr.c scsi: ipr: Fix softlockup when rescanning devices in petitboot 2020-04-01 11:01:54 +02:00
ipr.h scsi: ipr: Fix softlockup when rescanning devices in petitboot 2020-04-01 11:01:54 +02:00
ips.c
ips.h
iscsi_boot_sysfs.c scsi: iscsi: Fix reference count leak in iscsi_boot_create_kobj 2020-06-24 17:50:37 +02:00
iscsi_tcp.c scsi: iscsi: Don't destroy session if there are outstanding connections 2020-02-24 08:36:50 +01:00
iscsi_tcp.h
jazz_esp.c scsi: jazz_esp: Add IRQ check 2021-05-14 09:44:25 +02:00
Kconfig scsi: sr: remove references to BLK_DEV_SR_VENDOR, leave it enabled 2020-07-22 09:32:57 +02:00
lasi700.c
libiscsi.c scsi: libiscsi: Fix UAF in iscsi_conn_get_param()/iscsi_conn_teardown() 2022-01-11 15:23:33 +01:00
libiscsi_tcp.c
mac53c94.c
mac53c94.h
mac_esp.c
mac_scsi.c scsi: atari_scsi: sun3_scsi: Set sg_tablesize to 1 instead of SG_NONE 2020-01-04 19:18:10 +01:00
Makefile
megaraid.c scsi: megaraid: disable device when probe failed after enabled device 2019-09-23 23:09:42 -04:00
megaraid.h
mesh.c scsi: mesh: Fix panic after host or bus reset 2020-08-19 08:16:15 +02:00
mesh.h
mvme16x_scsi.c
mvme147.c
mvme147.h
mvumi.c scsi: mvumi: Fix error return in mvumi_io_attach() 2020-10-29 09:58:04 +01:00
mvumi.h
myrb.c
myrb.h
myrs.c scsi: myrs: Fix a double free in myrs_cleanup() 2021-03-24 11:26:40 +01:00
myrs.h
ncr53c8xx.c
ncr53c8xx.h
NCR5380.c scsi: NCR5380: Add disconnect_mask module parameter 2020-01-04 19:18:16 +01:00
NCR5380.h
nsp32.c
nsp32.h
nsp32_debug.c
nsp32_io.h
pmcraid.c scsi: pmcraid: Fix a typo - pcmraid --> pmcraid 2019-08-12 21:57:13 -04:00
pmcraid.h
ppa.c
ppa.h
ps3rom.c
qla1280.c qla1280: remove SGI SN2 support 2019-08-16 11:33:56 -07:00
qla1280.h qla1280: remove SGI SN2 support 2019-08-16 11:33:56 -07:00
qlogicfas.c
qlogicfas408.c
qlogicfas408.h
qlogicpti.c
qlogicpti.h
raid_class.c
script_asm.pl
scsi.c scsi: core: Put LLD module refcnt after SCSI device is released 2021-11-06 13:59:44 +01:00
scsi.h
scsi_common.c
scsi_debug.c scsi: scsi_debug: Sanity check block descriptor length in resp_mode_select() 2021-12-22 09:29:40 +01:00
scsi_debugfs.c scsi: core: Show SCMD_LAST in text form 2022-01-27 09:19:52 +01:00
scsi_debugfs.h
scsi_devinfo.c scsi: scsi_devinfo: Add blacklist entry for HPE OPEN-V 2021-06-18 09:58:59 +02:00
scsi_dh.c scsi: dh: Add Fujitsu device to devinfo and dh lists 2020-07-29 10:18:27 +02:00
scsi_error.c scsi: core: save/restore command resid for error handling 2019-10-03 21:43:04 -04:00
scsi_ioctl.c
scsi_lib.c scsi: core: Retry I/O for Notify (Enable Spinup) Required error 2021-07-14 16:53:48 +02:00
scsi_lib_dma.c
scsi_logging.c
scsi_logging.h
scsi_netlink.c
scsi_pm.c scsi: pm: Balance pm_only counter of request queue during system resume 2020-06-07 13:18:50 +02:00
scsi_priv.h
scsi_proc.c
scsi_sas_internal.h
scsi_scan.c scsi: core: Avoid printing an error if target_alloc() returns -ENXIO 2021-08-26 08:36:14 -04:00
scsi_sysctl.c
scsi_sysfs.c scsi: core: sysfs: Fix setting device state to SDEV_RUNNING 2021-12-01 09:23:33 +01:00
scsi_trace.c scsi: core: scsi_trace: Use get_unaligned_be*() 2020-01-23 08:22:59 +01:00
scsi_transport_api.h
scsi_transport_fc.c
scsi_transport_iscsi.c scsi: iscsi: Unblock session then wake up error handler 2021-12-08 09:01:09 +01:00
scsi_transport_sas.c scsi: scsi_transport_sas: Fix memory leak when removing devices 2020-01-23 08:22:58 +01:00
scsi_transport_spi.c scsi: scsi_transport_spi: Set RQF_PM for domain validation commands 2021-01-12 20:16:09 +01:00
scsi_transport_srp.c scsi: scsi_transport_srp: Don't block target in SRP_PORT_LOST state 2021-04-21 12:56:14 +02:00
scsicam.c
sd.c scsi: sd: Free scsi_disk device via put_device() 2021-10-09 14:39:49 +02:00
sd.h
sd_dif.c
sd_zbc.c scsi: sd_zbc: Fix sd_zbc_complete() 2019-11-05 23:17:53 -05:00
sense_codes.h
ses.c scsi: ses: Fix unsigned comparison with less than zero 2021-10-17 10:42:34 +02:00
sg.c scsi: sg: add sg_remove_request in sg_write 2020-05-20 08:20:07 +02:00
sgiwd93.c
sim710.c
sni_53c710.c scsi: sni_53c710: Add IRQ check 2021-05-14 09:44:25 +02:00
sr.c scsi: sr: Don't use GFP_DMA 2022-01-27 09:19:48 +01:00
sr.h
sr_ioctl.c
sr_vendor.c scsi: sr: Don't use GFP_DMA 2022-01-27 09:19:48 +01:00
st.c scsi: st: Fix a use after free in st_open() 2021-04-07 14:47:39 +02:00
st.h
st_options.h
stex.c
storvsc_drv.c scsi: storvsc: Correctly set number of hardware queues for IDE disk 2020-01-23 08:22:38 +01:00
sun3_scsi.c scsi: atari_scsi: sun3_scsi: Set sg_tablesize to 1 instead of SG_NONE 2020-01-04 19:18:10 +01:00
sun3_scsi_vme.c
sun3x_esp.c scsi: sun3x_esp: Add IRQ check 2021-05-14 09:44:25 +02:00
sun_esp.c
virtio_scsi.c scsi: virtio_scsi: Fix spelling mistake "Unsupport" -> "Unsupported" 2021-10-17 10:42:34 +02:00
vmw_pvscsi.c scsi: vmw_pvscsi: Set residual data length conditionally 2022-01-05 12:37:46 +01:00
vmw_pvscsi.h
wd33c93.c
wd33c93.h
wd719x.c
wd719x.h
xen-scsifront.c
zalon.c
zorro7xx.c
zorro_esp.c scsi: zorro_esp: Limit DMA transfers to 65536 bytes (except on Fastlane) 2020-01-04 19:17:37 +01:00