Hi Martin, The patches in this series improve the robustness of the QLogic Fibre Channel initiator and target drivers. These patches are a result of manual code inspection, analysis of Coverity reports and stress testing of these two drivers. Please consider these patches for kernel version v5.4. Thanks, Bart. Changes compared to v1: - Included a regression fix for qla2xxx_eh_abort() in the second patch of this series (the fix Himanshu mentioned in his e-mail). - Moved a WARN_ON_ONCE() statement from a later patch to the second patch in this series. - Dropped one patch that renames a function. Bart Van Assche (58): qla2xxx: Make qla2x00_abort_srb() again decrease the sp reference count qla2xxx: Really fix qla2xxx_eh_abort() qla2xxx: Improve Linux kernel coding style conformance qla2xxx: Use tabs instead of spaces for indentation qla2xxx: Include the <asm/unaligned.h> header file from qla_dsd.h qla2xxx: Remove an include directive from qla_mr.c qla2xxx: Remove a superfluous forward declaration qla2xxx: Declare the fourth ql_dump_buffer() argument const qla2xxx: Change the return type of qla2x00_update_ms_fdmi_iocb() into void qla2xxx: Reduce the scope of three local variables in qla2xxx_queuecommand() qla2xxx: Declare qla_tgt_cmd.cdb const qla2xxx: Change data_dsd into an array qla2xxx: Verify locking assumptions at runtime qla2xxx: Reduce the number of casts in GID list code qla2xxx: Simplify qlt_lport_dump() qla2xxx: Remove a superfluous pointer check qla2xxx: Remove two superfluous tests qla2xxx: Simplify qla24xx_abort_sp_done() qla2xxx: Fix session lookup in qlt_abort_work() qla2xxx: Report the firmware status code if a mailbox command fails qla2xxx: Do not corrupt vha->plogi_ack_list qla2xxx: Use strlcpy() instead of strncpy() qla2xxx: Complain if a mailbox command times out qla2xxx: Complain if parsing the version string fails qla2xxx: Remove dead code qla2xxx: Simplify a debug statement qla2xxx: Fix qla24xx_process_bidir_cmd() qla2xxx: Remove unreachable code from qla83xx_idc_lock() qla2xxx: Suppress a Coveritiy complaint about integer overflow qla2xxx: Suppress multiple Coverity complaint about out-of-bounds accesses qla2xxx: Always check the qla2x00_wait_for_hba_online() return value qla2xxx: Declare fourth qla2x00_set_model_info() argument const qla2xxx: Complain if waiting for pending commands times out qla2xxx: Check the PCI info string output buffer size qla2xxx: Use memcpy() and strlcpy() instead of strcpy() and strncpy() qla2xxx: Complain if a soft reset fails qla2xxx: Introduce the be_id_t and le_id_t data types for FC src/dst IDs qla2xxx: Change the return type of qla24xx_read_flash_data() qla2xxx: Check secondary image if reading the primary image fails qla2xxx: Make it explicit that ELS pass-through IOCBs use little endian qla2xxx: Set the responder mode if appropriate for ELS pass-through IOCBs qla2xxx: Rework key encoding in qlt_find_host_by_d_id() qla2xxx: Enable type checking for the SRB free and done callback functions qla2xxx: Introduce the function qla2xxx_init_sp() qla2xxx: Fix a race condition between aborting and completing a SCSI command qla2xxx: Make qlt_handle_abts_completion() more robust qla2xxx: Modify NVMe include directives qla2xxx: Introduce qla2xxx_get_next_handle() qla2xxx: Make sure that aborted commands are freed qla2xxx: Complain if sp->done() is not called from the completion path qla2xxx: Let the compiler check the type of the SCSI command context pointer qla2xxx: Remove superfluous sts_entry_* casts qla2xxx: Report invalid mailbox status codes qla2xxx: Inline the qla2x00_fcport_event_handler() function qla2xxx: Introduce qla2x00_els_dcmd2_free() qla2xxx: Remove two superfluous if-tests qla2xxx: Simplify qla24xx_async_abort_cmd() qla2xxx: Fix a NULL pointer dereference drivers/scsi/qla2xxx/qla_attr.c | 6 +- drivers/scsi/qla2xxx/qla_bsg.c | 19 +-- drivers/scsi/qla2xxx/qla_dbg.c | 3 +- drivers/scsi/qla2xxx/qla_def.h | 130 ++++++++++---- drivers/scsi/qla2xxx/qla_dfs.c | 9 +- drivers/scsi/qla2xxx/qla_dsd.h | 2 + drivers/scsi/qla2xxx/qla_fw.h | 8 +- drivers/scsi/qla2xxx/qla_gbl.h | 33 ++-- drivers/scsi/qla2xxx/qla_gs.c | 219 +++++++++--------------- drivers/scsi/qla2xxx/qla_init.c | 261 +++++++++++------------------ drivers/scsi/qla2xxx/qla_inline.h | 28 ++-- drivers/scsi/qla2xxx/qla_iocb.c | 221 +++++++++--------------- drivers/scsi/qla2xxx/qla_isr.c | 24 ++- drivers/scsi/qla2xxx/qla_mbx.c | 10 +- drivers/scsi/qla2xxx/qla_mid.c | 4 +- drivers/scsi/qla2xxx/qla_mr.c | 67 ++++---- drivers/scsi/qla2xxx/qla_nvme.c | 28 +--- drivers/scsi/qla2xxx/qla_nvme.h | 5 +- drivers/scsi/qla2xxx/qla_nx.c | 16 +- drivers/scsi/qla2xxx/qla_nx.h | 14 +- drivers/scsi/qla2xxx/qla_nx2.c | 2 +- drivers/scsi/qla2xxx/qla_os.c | 213 ++++++++++------------- drivers/scsi/qla2xxx/qla_sup.c | 8 +- drivers/scsi/qla2xxx/qla_target.c | 209 +++++++++-------------- drivers/scsi/qla2xxx/qla_target.h | 35 ++-- drivers/scsi/qla2xxx/qla_tmpl.c | 7 +- drivers/scsi/qla2xxx/tcm_qla2xxx.c | 27 ++- include/linux/nvme-fc-driver.h | 2 + 28 files changed, 677 insertions(+), 933 deletions(-) -- 2.22.0