scsi: lpfc: Fix noderef and address space warnings
authorDick Kennedy <dick.kennedy@broadcom.com>
Fri, 1 May 2020 21:43:08 +0000 (14:43 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 8 May 2020 02:47:26 +0000 (22:47 -0400)
Running make C=1 M=drivers/scsi/lpfc triggers sparse warnings

Correct the code generating the following errors:

 - Incompatible address space assignment without proper conversion.

 - Deference of usespace and per-cpu pointers.

Link: https://lore.kernel.org/r/20200501214310.91713-8-jsmart2021@gmail.com
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_debugfs.c
drivers/scsi/lpfc/lpfc_mbox.c
drivers/scsi/lpfc/lpfc_sli.c

index 8a6e02aa553fc17558e9d815a970d6f887d66acb..24d946ef8609d3c25c32306f2943cc93522ce8c8 100644 (file)
@@ -2436,7 +2436,8 @@ lpfc_debugfs_dif_err_write(struct file *file, const char __user *buf,
                return 0;
 
        if (dent == phba->debug_InjErrLBA) {
-               if ((buf[0] == 'o') && (buf[1] == 'f') && (buf[2] == 'f'))
+               if ((dstbuf[0] == 'o') && (dstbuf[1] == 'f') &&
+                   (dstbuf[2] == 'f'))
                        tmp = (uint64_t)(-1);
        }
 
index e35b52b66d6c7d97bdc71560175f2c733771a882..e34e0f11bfdd5aae62357860e66a97454009b459 100644 (file)
@@ -1378,7 +1378,8 @@ lpfc_config_port(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
         */
 
        if (phba->cfg_hostmem_hgp && phba->sli_rev != 3) {
-               phba->host_gp = &phba->mbox->us.s2.host[0];
+               phba->host_gp = (struct lpfc_hgp __iomem *)
+                                &phba->mbox->us.s2.host[0];
                phba->hbq_put = NULL;
                offset = (uint8_t *)&phba->mbox->us.s2.host -
                        (uint8_t *)phba->slim2p.virt;
index df77e75b9f533d5f7d04289fa0e644ae48e47360..0c9844cac3aaf0ff7d9743ffc25b123638def496 100644 (file)
@@ -14272,7 +14272,6 @@ lpfc_sli4_hba_intr_handler(int irq, void *dev_id)
        int ecount = 0;
        int hba_eqidx;
        struct lpfc_eq_intr_info *eqi;
-       uint32_t icnt;
 
        /* Get the driver's phba structure from the dev_id */
        hba_eq_hdl = (struct lpfc_hba_eq_hdl *)dev_id;
@@ -14300,11 +14299,12 @@ lpfc_sli4_hba_intr_handler(int irq, void *dev_id)
                return IRQ_NONE;
        }
 
-       eqi = phba->sli4_hba.eq_info;
-       icnt = this_cpu_inc_return(eqi->icnt);
+       eqi = this_cpu_ptr(phba->sli4_hba.eq_info);
+       eqi->icnt++;
+
        fpeq->last_cpu = raw_smp_processor_id();
 
-       if (icnt > LPFC_EQD_ISR_TRIGGER &&
+       if (eqi->icnt > LPFC_EQD_ISR_TRIGGER &&
            fpeq->q_flag & HBA_EQ_DELAY_CHK &&
            phba->cfg_auto_imax &&
            fpeq->q_mode != LPFC_MAX_AUTO_EQ_DELAY &&