[bug report] scsi: lpfc: Replace io_channels for nvme and fcp with general hdw_queues per cpu

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello James Smart,

The patch cdb42becdd40: "scsi: lpfc: Replace io_channels for nvme and
fcp with general hdw_queues per cpu" from Jan 28, 2019, leads to the
following static checker warning:

	drivers/scsi/lpfc/lpfc_init.c:11136 lpfc_sli4_hba_unset()
	error: we previously assumed 'phba->pport' could be null (see line 11074)

drivers/scsi/lpfc/lpfc_init.c
    11065 static void
    11066 lpfc_sli4_hba_unset(struct lpfc_hba *phba)
    11067 {
    11068 	int wait_cnt = 0;
    11069 	LPFC_MBOXQ_t *mboxq;
    11070 	struct pci_dev *pdev = phba->pcidev;
    11071 
    11072 	lpfc_stop_hba_timers(phba);
    11073 	if (phba->pport)
                    ^^^^^^^^^^^
New check for NULL.

    11074 		phba->sli4_hba.intr_enable = 0;
    11075 
    11076 	/*
    11077 	 * Gracefully wait out the potential current outstanding asynchronous
    11078 	 * mailbox command.
    11079 	 */
    11080 
    11081 	/* First, block any pending async mailbox command from posted */
    11082 	spin_lock_irq(&phba->hbalock);
    11083 	phba->sli.sli_flag |= LPFC_SLI_ASYNC_MBX_BLK;
    11084 	spin_unlock_irq(&phba->hbalock);
    11085 	/* Now, trying to wait it out if we can */
    11086 	while (phba->sli.sli_flag & LPFC_SLI_MBOX_ACTIVE) {
    11087 		msleep(10);
    11088 		if (++wait_cnt > LPFC_ACTIVE_MBOX_WAIT_CNT)
    11089 			break;
    11090 	}
    11091 	/* Forcefully release the outstanding mailbox command if timed out */
    11092 	if (phba->sli.sli_flag & LPFC_SLI_MBOX_ACTIVE) {
    11093 		spin_lock_irq(&phba->hbalock);
    11094 		mboxq = phba->sli.mbox_active;
    11095 		mboxq->u.mb.mbxStatus = MBX_NOT_FINISHED;
    11096 		__lpfc_mbox_cmpl_put(phba, mboxq);
    11097 		phba->sli.sli_flag &= ~LPFC_SLI_MBOX_ACTIVE;
    11098 		phba->sli.mbox_active = NULL;
    11099 		spin_unlock_irq(&phba->hbalock);
    11100 	}
    11101 
    11102 	/* Abort all iocbs associated with the hba */
    11103 	lpfc_sli_hba_iocb_abort(phba);
    11104 
    11105 	/* Wait for completion of device XRI exchange busy */
    11106 	lpfc_sli4_xri_exchange_busy_wait(phba);
    11107 
    11108 	/* Disable PCI subsystem interrupt */
    11109 	lpfc_sli4_disable_intr(phba);
    11110 
    11111 	/* Disable SR-IOV if enabled */
    11112 	if (phba->cfg_sriov_nr_virtfn)
    11113 		pci_disable_sriov(pdev);
    11114 
    11115 	/* Stop kthread signal shall trigger work_done one more time */
    11116 	kthread_stop(phba->worker_thread);
    11117 
    11118 	/* Disable FW logging to host memory */
    11119 	lpfc_ras_stop_fwlog(phba);
    11120 
    11121 	/* Unset the queues shared with the hardware then release all
    11122 	 * allocated resources.
    11123 	 */
    11124 	lpfc_sli4_queue_unset(phba);
    11125 	lpfc_sli4_queue_destroy(phba);
    11126 
    11127 	/* Reset SLI4 HBA FCoE function */
    11128 	lpfc_pci_function_reset(phba);
    11129 
    11130 	/* Free RAS DMA memory */
    11131 	if (phba->ras_fwlog.ras_enabled)
    11132 		lpfc_sli4_ras_dma_free(phba);
    11133 
    11134 	/* Stop the SLI4 device port */
--> 11135 	phba->pport->work_port_events = 0;
                ^^^^^^^^^^^^^
Unchecked dereference.

    11136 }

regards,
dan carpenter



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux