• Martin Wilck's avatar
    scsi: fnic: Move flush_work initialization out of if block · f30e5f77
    Martin Wilck authored
    After commit 379a58ca ("scsi: fnic: Move fnic_fnic_flush_tx() to a
    work queue"), it can happen that a work item is sent to an uninitialized
    work queue.  This may has the effect that the item being queued is never
    actually queued, and any further actions depending on it will not
    proceed.
    
    The following warning is observed while the fnic driver is loaded:
    
    kernel: WARNING: CPU: 11 PID: 0 at ../kernel/workqueue.c:1524 __queue_work+0x373/0x410
    kernel:  <IRQ>
    kernel:  queue_work_on+0x3a/0x50
    kernel:  fnic_wq_copy_cmpl_handler+0x54a/0x730 [fnic 62fbff0c42e7fb825c60a55cde2fb91facb2ed24]
    kernel:  fnic_isr_msix_wq_copy+0x2d/0x60 [fnic 62fbff0c42e7fb825c60a55cde2fb91facb2ed24]
    kernel:  __handle_irq_event_percpu+0x36/0x1a0
    kernel:  handle_irq_event_percpu+0x30/0x70
    kernel:  handle_irq_event+0x34/0x60
    kernel:  handle_edge_irq+0x7e/0x1a0
    kernel:  __common_interrupt+0x3b/0xb0
    kernel:  common_interrupt+0x58/0xa0
    kernel:  </IRQ>
    
    It has been observed that this may break the rediscovery of Fibre
    Channel devices after a temporary fabric failure.
    
    This patch fixes it by moving the work queue initialization out of
    an if block in fnic_probe().
    Signed-off-by: default avatarMartin Wilck <mwilck@suse.com>
    Fixes: 379a58ca ("scsi: fnic: Move fnic_fnic_flush_tx() to a work queue")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20240930133014.71615-1-mwilck@suse.comReviewed-by: default avatarLee Duncan <lduncan@suse.com>
    Reviewed-by: default avatarKaran Tilak Kumar <kartilak@cisco.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    f30e5f77
fnic_main.c 33.9 KB