Re: [linux-next:master 5384/13831] drivers/scsi/mpi3mr/mpi3mr_os.c:873 mpi3mr_update_tgtdev() error: we previously assumed 'mrioc->shost' could be null (see line 870)

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

 



On Mon, Jun 28, 2021 at 5:59 PM Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote:
>
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> head:   3579aa488520feeda433ceca23ef4704bf8cd280
> commit: 74e1f30a28680978fa9ddfb5360d0cc644cd348e [5384/13831] scsi: mpi3mr: Add EEDP DIF DIX support
> config: i386-randconfig-m021-20210628 (attached as .config)
> compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@xxxxxxxxx>
> Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
>
> smatch warnings:
> drivers/scsi/mpi3mr/mpi3mr_os.c:873 mpi3mr_update_tgtdev() error: we previously assumed 'mrioc->shost' could be null (see line 870)
>
> vim +873 drivers/scsi/mpi3mr/mpi3mr_os.c
>
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  800  static void mpi3mr_update_tgtdev(struct mpi3mr_ioc *mrioc,
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  801    struct mpi3mr_tgt_dev *tgtdev, struct mpi3_device_page0 *dev_pg0)
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  802  {
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  803    u16 flags = 0;
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  804    struct mpi3mr_stgt_priv_data *scsi_tgt_priv_data;
> 74e1f30a286809 Kashyap Desai 2021-05-20  805    u8 prot_mask = 0;
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  806
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  807    tgtdev->perst_id = le16_to_cpu(dev_pg0->persistent_id);
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  808    tgtdev->dev_handle = le16_to_cpu(dev_pg0->dev_handle);
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  809    tgtdev->dev_type = dev_pg0->device_form;
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  810    tgtdev->encl_handle = le16_to_cpu(dev_pg0->enclosure_handle);
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  811    tgtdev->parent_handle = le16_to_cpu(dev_pg0->parent_dev_handle);
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  812    tgtdev->slot = le16_to_cpu(dev_pg0->slot);
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  813    tgtdev->q_depth = le16_to_cpu(dev_pg0->queue_depth);
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  814    tgtdev->wwid = le64_to_cpu(dev_pg0->wwid);
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  815
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  816    flags = le16_to_cpu(dev_pg0->flags);
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  817    tgtdev->is_hidden = (flags & MPI3_DEVICE0_FLAGS_HIDDEN);
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  818
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  819    if (tgtdev->starget && tgtdev->starget->hostdata) {
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  820            scsi_tgt_priv_data = (struct mpi3mr_stgt_priv_data *)
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  821                tgtdev->starget->hostdata;
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  822            scsi_tgt_priv_data->perst_id = tgtdev->perst_id;
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  823            scsi_tgt_priv_data->dev_handle = tgtdev->dev_handle;
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  824            scsi_tgt_priv_data->dev_type = tgtdev->dev_type;
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  825    }
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  826
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  827    switch (tgtdev->dev_type) {
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  828    case MPI3_DEVICE_DEVFORM_SAS_SATA:
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  829    {
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  830            struct mpi3_device0_sas_sata_format *sasinf =
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  831                &dev_pg0->device_specific.sas_sata_format;
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  832            u16 dev_info = le16_to_cpu(sasinf->device_info);
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  833
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  834            tgtdev->dev_spec.sas_sata_inf.dev_info = dev_info;
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  835            tgtdev->dev_spec.sas_sata_inf.sas_address =
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  836                le64_to_cpu(sasinf->sas_address);
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  837            if ((dev_info & MPI3_SAS_DEVICE_INFO_DEVICE_TYPE_MASK) !=
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  838                MPI3_SAS_DEVICE_INFO_DEVICE_TYPE_END_DEVICE)
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  839                    tgtdev->is_hidden = 1;
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  840            else if (!(dev_info & (MPI3_SAS_DEVICE_INFO_STP_SATA_TARGET |
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  841                MPI3_SAS_DEVICE_INFO_SSP_TARGET)))
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  842                    tgtdev->is_hidden = 1;
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  843            break;
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  844    }
> 8e653455547a47 Kashyap Desai 2021-05-20  845    case MPI3_DEVICE_DEVFORM_PCIE:
> 8e653455547a47 Kashyap Desai 2021-05-20  846    {
> 8e653455547a47 Kashyap Desai 2021-05-20  847            struct mpi3_device0_pcie_format *pcieinf =
> 8e653455547a47 Kashyap Desai 2021-05-20  848                &dev_pg0->device_specific.pcie_format;
> 8e653455547a47 Kashyap Desai 2021-05-20  849            u16 dev_info = le16_to_cpu(pcieinf->device_info);
> 8e653455547a47 Kashyap Desai 2021-05-20  850
> 8e653455547a47 Kashyap Desai 2021-05-20  851            tgtdev->dev_spec.pcie_inf.capb =
> 8e653455547a47 Kashyap Desai 2021-05-20  852                le32_to_cpu(pcieinf->capabilities);
> 8e653455547a47 Kashyap Desai 2021-05-20  853            tgtdev->dev_spec.pcie_inf.mdts = MPI3MR_DEFAULT_MDTS;
> 8e653455547a47 Kashyap Desai 2021-05-20  854            /* 2^12 = 4096 */
> 8e653455547a47 Kashyap Desai 2021-05-20  855            tgtdev->dev_spec.pcie_inf.pgsz = 12;
> 8e653455547a47 Kashyap Desai 2021-05-20  856            if (dev_pg0->access_status == MPI3_DEVICE0_ASTATUS_NO_ERRORS) {
> 8e653455547a47 Kashyap Desai 2021-05-20  857                    tgtdev->dev_spec.pcie_inf.mdts =
> 8e653455547a47 Kashyap Desai 2021-05-20  858                        le32_to_cpu(pcieinf->maximum_data_transfer_size);
> 8e653455547a47 Kashyap Desai 2021-05-20  859                    tgtdev->dev_spec.pcie_inf.pgsz = pcieinf->page_size;
> 8e653455547a47 Kashyap Desai 2021-05-20  860                    tgtdev->dev_spec.pcie_inf.reset_to =
> 8e653455547a47 Kashyap Desai 2021-05-20  861                        pcieinf->controller_reset_to;
> 8e653455547a47 Kashyap Desai 2021-05-20  862                    tgtdev->dev_spec.pcie_inf.abort_to =
> 8e653455547a47 Kashyap Desai 2021-05-20  863                        pcieinf->nv_me_abort_to;
> 8e653455547a47 Kashyap Desai 2021-05-20  864            }
> 8e653455547a47 Kashyap Desai 2021-05-20  865            if (tgtdev->dev_spec.pcie_inf.mdts > (1024 * 1024))
> 8e653455547a47 Kashyap Desai 2021-05-20  866                    tgtdev->dev_spec.pcie_inf.mdts = (1024 * 1024);
> 8e653455547a47 Kashyap Desai 2021-05-20  867            if ((dev_info & MPI3_DEVICE0_PCIE_DEVICE_INFO_TYPE_MASK) !=
> 8e653455547a47 Kashyap Desai 2021-05-20  868                MPI3_DEVICE0_PCIE_DEVICE_INFO_TYPE_NVME_DEVICE)
> 8e653455547a47 Kashyap Desai 2021-05-20  869                    tgtdev->is_hidden = 1;
> 74e1f30a286809 Kashyap Desai 2021-05-20 @870            if (mrioc->shost)
>                                                             ^^^^^^^^^^^^
> Check for NULL
>
> 74e1f30a286809 Kashyap Desai 2021-05-20  871                    prot_mask = scsi_host_get_prot(mrioc->shost);
> 74e1f30a286809 Kashyap Desai 2021-05-20  872            if (prot_mask & SHOST_DIX_TYPE0_PROTECTION) {
> 74e1f30a286809 Kashyap Desai 2021-05-20 @873                    scsi_host_set_prot(mrioc->shost, prot_mask & 0x77);
>                                                                                    ^^^^^^^^^^^^
> Do we need to check here as well?

I think, further check for NULL is not needed. Above check is sufficient.
>
> 74e1f30a286809 Kashyap Desai 2021-05-20  874                    ioc_info(mrioc,
> 74e1f30a286809 Kashyap Desai 2021-05-20  875                        "%s : Disabling DIX0 prot capability\n", __func__);
> 74e1f30a286809 Kashyap Desai 2021-05-20  876                    ioc_info(mrioc,
> 74e1f30a286809 Kashyap Desai 2021-05-20  877                        "because HBA does not support DIX0 operation on NVME drives\n");
> 74e1f30a286809 Kashyap Desai 2021-05-20  878            }
> 8e653455547a47 Kashyap Desai 2021-05-20  879            break;
> 8e653455547a47 Kashyap Desai 2021-05-20  880    }
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  881    case MPI3_DEVICE_DEVFORM_VD:
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  882    {
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  883            struct mpi3_device0_vd_format *vdinf =
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  884                &dev_pg0->device_specific.vd_format;
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  885
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  886            tgtdev->dev_spec.vol_inf.state = vdinf->vd_state;
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  887            if (vdinf->vd_state == MPI3_DEVICE0_VD_STATE_OFFLINE)
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  888                    tgtdev->is_hidden = 1;
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  889            break;
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  890    }
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  891    default:
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  892            break;
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  893    }
> 13ef29ea4aa065 Kashyap Desai 2021-05-20  894  }
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
>
>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux