mbox series

[00/59] qla2xxx patches for kernel v5.4

Message ID 20190801175614.73655-1-bvanassche@acm.org (mailing list archive)
Headers show
Series qla2xxx patches for kernel v5.4 | expand

Message

Bart Van Assche Aug. 1, 2019, 5:55 p.m. UTC
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.

Bart Van Assche (59):
  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: Rename qla24xx_async_abort_command() into
    qla24xx_sync_abort_command()
  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     |  35 ++--
 drivers/scsi/qla2xxx/qla_gs.c      | 219 +++++++++--------------
 drivers/scsi/qla2xxx/qla_init.c    | 267 +++++++++++------------------
 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     |  12 +-
 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      | 222 ++++++++++--------------
 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, 685 insertions(+), 944 deletions(-)

Comments

Himanshu Madhani Aug. 5, 2019, 1:58 p.m. UTC | #1
Hi Bart, 


> On Aug 1, 2019, at 12:55 PM, Bart Van Assche <bvanassche@acm.org> wrote:
> 
> 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.
> 
> Bart Van Assche (59):
>  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: Rename qla24xx_async_abort_command() into
>    qla24xx_sync_abort_command()
>  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     |  35 ++--
> drivers/scsi/qla2xxx/qla_gs.c      | 219 +++++++++--------------
> drivers/scsi/qla2xxx/qla_init.c    | 267 +++++++++++------------------
> 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     |  12 +-
> 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      | 222 ++++++++++--------------
> 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, 685 insertions(+), 944 deletions(-)
> 
> -- 
> 2.22.0.770.g0f2c4a37fd-goog
> 

Thanks for the series.  I’ll run this series through our regression cycle before I provide ACK. 

Thanks,
Himanshu
Himanshu Madhani Aug. 8, 2019, 4:10 p.m. UTC | #2
Hi Bart, 


> On Aug 1, 2019, at 12:55 PM, Bart Van Assche <bvanassche@acm.org> wrote:
> 
> 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.
> 
> Bart Van Assche (59):
>  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: Rename qla24xx_async_abort_command() into
>    qla24xx_sync_abort_command()
>  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     |  35 ++--
> drivers/scsi/qla2xxx/qla_gs.c      | 219 +++++++++--------------
> drivers/scsi/qla2xxx/qla_init.c    | 267 +++++++++++------------------
> 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     |  12 +-
> 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      | 222 ++++++++++--------------
> 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, 685 insertions(+), 944 deletions(-)
> 
> -- 
> 2.22.0.770.g0f2c4a37fd-goog
> 

I found issue with this series in my testing. Thanks for promptly providing fix. 

I’ll let my test bed have more soak time with new fix and will update.

Please repost v2 of this series with the fix for Patch #2. 

Thanks,
- Himanshu