svn commit: r343349 - head/sys/dev/ocs_fc

Rodney W. Grimes freebsd at pdx.rh.CN85.dnsmgr.net
Fri Jan 25 13:44:23 UTC 2019


> Hi Rodney,
> 
> I fixed many coverity tool warnings as part of this commit. Adding all the
> warnings and fix details seemed over kill.

It seems like overkill when your commiting, but if you have
have to go digging through commit history trying to find
something it helps a great deal to have good information
present there.

You do not need to include the output from coverty,
but some amount of detail is very helpful.

Seeing returns 0 changed into return -1 just seems
a strange thing to need to do to fix a static analysis issue.

> 
> I will use a better commit message when I do MFC commit of this revision.
Those commits should usually just duplicate the ^head
message with a 1 liner at the top that is a
MFC: rXXXXXX one line summary of original commit.

  Original commit message here

> Thanks,
> Ram
> 
> 
> 
> On Thu, Jan 24, 2019 at 12:28 AM Rodney W. Grimes <
> freebsd at pdx.rh.cn85.dnsmgr.net> wrote:
> 
> > > Author: ram
> > > Date: Wed Jan 23 17:34:01 2019
> > > New Revision: 343349
> > > URL: https://svnweb.freebsd.org/changeset/base/343349
> > >
> > > Log:
> > >   Fixed issues reported by coverity scan.
> >
> > The quality of this commit message is rather low,
> > it should of at least included some details about
> > what was wrong, why it was wrong, and how it was
> > fixed.
> >
> > Thanks,
> > Rod
> > >
> > >   Approved by: mav
> > >   MFC after: 3 weeks
> > >
> > > Modified:
> > >   head/sys/dev/ocs_fc/ocs_cam.c
> > >   head/sys/dev/ocs_fc/ocs_hw.c
> > >   head/sys/dev/ocs_fc/ocs_hw_queues.c
> > >   head/sys/dev/ocs_fc/ocs_ioctl.c
> > >   head/sys/dev/ocs_fc/ocs_mgmt.c
> > >   head/sys/dev/ocs_fc/ocs_node.c
> > >   head/sys/dev/ocs_fc/ocs_pci.c
> > >   head/sys/dev/ocs_fc/ocs_xport.c
> > >   head/sys/dev/ocs_fc/sli4.c
> > >
> > > Modified: head/sys/dev/ocs_fc/ocs_cam.c
> > >
> > ==============================================================================
> > > --- head/sys/dev/ocs_fc/ocs_cam.c     Wed Jan 23 17:28:39 2019
> > (r343348)
> > > +++ head/sys/dev/ocs_fc/ocs_cam.c     Wed Jan 23 17:34:01 2019
> > (r343349)
> > > @@ -1164,15 +1164,24 @@ ocs_scsi_del_target(ocs_node_t *node,
> > ocs_scsi_del_tar
> > >       struct ocs_softc *ocs = node->ocs;
> > >       ocs_fcport      *fcp = NULL;
> > >       ocs_fc_target_t *tgt = NULL;
> > > -     uint32_t        tgt_id;
> > > +     int32_t tgt_id;
> > >
> > > +     if (ocs == NULL) {
> > > +             ocs_log_err(ocs,"OCS is NULL \n");
> > > +             return -1;
> > > +     }
> > > +
> > >       fcp = node->sport->tgt_data;
> > >       if (fcp == NULL) {
> > >               ocs_log_err(ocs,"FCP is NULL \n");
> > > -             return 0;
> > > +             return -1;
> > >       }
> > >
> > >       tgt_id = ocs_tgt_find(fcp, node);
> > > +     if (tgt_id == -1) {
> > > +             ocs_log_err(ocs,"target is invalid\n");
> > > +             return -1;
> > > +     }
> > >
> > >       tgt = &fcp->tgt[tgt_id];
> > >
> > > @@ -1781,13 +1790,9 @@ ocs_initiator_io(struct ocs_softc *ocs, union ccb
> > *ccb
> > >       ocs_io_t *io = NULL;
> > >       ocs_scsi_sgl_t sgl[OCS_FC_MAX_SGL];
> > >       int32_t sgl_count;
> > > +     ocs_fcport      *fcp;
> > >
> > > -     ocs_fcport      *fcp = NULL;
> > >       fcp = FCPORT(ocs, cam_sim_bus(xpt_path_sim((ccb)->ccb_h.path)));
> > > -     if (fcp == NULL) {
> > > -             device_printf(ocs->dev, "%s: fcp is NULL\n", __func__);
> > > -             return -1;
> > > -     }
> > >
> > >       if (fcp->tgt[ccb_h->target_id].state == OCS_TGT_STATE_LOST) {
> > >               device_printf(ocs->dev, "%s: device LOST %d\n", __func__,
> > > @@ -2250,8 +2255,11 @@ ocs_action(struct cam_sim *sim, union ccb *ccb)
> > >       }
> > >       case XPT_RESET_BUS:
> > >               if (ocs_xport_control(ocs->xport, OCS_XPORT_PORT_OFFLINE)
> > == 0) {
> > > -                     ocs_xport_control(ocs->xport,
> > OCS_XPORT_PORT_ONLINE);
> > > -
> > > +                     rc = ocs_xport_control(ocs->xport,
> > OCS_XPORT_PORT_ONLINE);
> > > +                     if (rc) {
> > > +                             ocs_log_debug(ocs, "Failed to bring port
> > online"
> > > +                                                             " : %d\n",
> > rc);
> > > +                     }
> > >                       ocs_set_ccb_status(ccb, CAM_REQ_CMP);
> > >               } else {
> > >                       ocs_set_ccb_status(ccb, CAM_REQ_CMP_ERR);
> > >
> > > Modified: head/sys/dev/ocs_fc/ocs_hw.c
> > >
> > ==============================================================================
> > > --- head/sys/dev/ocs_fc/ocs_hw.c      Wed Jan 23 17:28:39 2019
> > (r343348)
> > > +++ head/sys/dev/ocs_fc/ocs_hw.c      Wed Jan 23 17:34:01 2019
> > (r343349)
> > > @@ -242,10 +242,7 @@ ocs_hw_get_num_chutes(ocs_hw_t *hw)
> > >  static ocs_hw_rtn_e
> > >  ocs_hw_link_event_init(ocs_hw_t *hw)
> > >  {
> > > -     if (hw == NULL) {
> > > -             ocs_log_err(hw->os, "bad parameter hw=%p\n", hw);
> > > -             return OCS_HW_RTN_ERROR;
> > > -     }
> > > +     ocs_hw_assert(hw);
> > >
> > >       hw->link.status = SLI_LINK_STATUS_MAX;
> > >       hw->link.topology = SLI_LINK_TOPO_NONE;
> > > @@ -1757,6 +1754,7 @@ ocs_hw_get(ocs_hw_t *hw, ocs_hw_property_e prop,
> > uint3
> > >               break;
> > >       case OCS_HW_MAX_VPORTS:
> > >               *value = sli_get_max_rsrc(&hw->sli, SLI_RSRC_FCOE_VPI);
> > > +             break;
> > >       default:
> > >               ocs_log_test(hw->os, "unsupported property %#x\n", prop);
> > >               rc = OCS_HW_RTN_ERROR;
> > > @@ -1996,6 +1994,7 @@ ocs_hw_set(ocs_hw_t *hw, ocs_hw_property_e prop,
> > uint3
> > >               break;
> > >       case OCS_ESOC:
> > >               hw->config.esoc = value;
> > > +             break;
> > >       case OCS_HW_HIGH_LOGIN_MODE:
> > >               rc = sli_set_hlm(&hw->sli, value);
> > >               break;
> > > @@ -4395,7 +4394,7 @@ ocs_hw_send_frame(ocs_hw_t *hw, fc_header_le_t
> > *hdr, u
> > >
> > >       OCS_STAT(wq->use_count++);
> > >
> > > -     return rc ? OCS_HW_RTN_ERROR : OCS_HW_RTN_SUCCESS;
> > > +     return OCS_HW_RTN_SUCCESS;
> > >  }
> > >
> > >  ocs_hw_rtn_e
> > > @@ -4696,7 +4695,7 @@ ocs_hw_io_overflow_sgl(ocs_hw_t *hw, ocs_hw_io_t
> > *io)
> > >       }
> > >
> > >       /* fail if we don't have an overflow SGL registered */
> > > -     if (io->ovfl_sgl == NULL) {
> > > +     if (io->ovfl_io == NULL || io->ovfl_sgl == NULL) {
> > >               return OCS_HW_RTN_ERROR;
> > >       }
> > >
> > > @@ -6321,6 +6320,11 @@ ocs_hw_config_watchdog_timer(ocs_hw_t *hw)
> > >       ocs_hw_rtn_e rc = OCS_HW_RTN_SUCCESS;
> > >       uint8_t *buf = ocs_malloc(hw->os, SLI4_BMBX_SIZE, OCS_M_NOWAIT);
> > >
> > > +     if (!buf) {
> > > +             ocs_log_err(hw->os, "no buffer for command\n");
> > > +             return OCS_HW_RTN_NO_MEMORY;
> > > +     }
> > > +
> > >       sli4_cmd_lowlevel_set_watchdog(&hw->sli, buf, SLI4_BMBX_SIZE,
> > hw->watchdog_timeout);
> > >       rc = ocs_hw_command(hw, buf, OCS_CMD_NOWAIT,
> > ocs_hw_cb_cfg_watchdog, NULL);
> > >       if (rc) {
> > > @@ -8486,7 +8490,14 @@ ocs_hw_cq_process(ocs_hw_t *hw, hw_cq_t *cq)
> > >                       break;
> > >               case SLI_QENTRY_WQ_RELEASE: {
> > >                       uint32_t wq_id = rid;
> > > -                     uint32_t index =
> > ocs_hw_queue_hash_find(hw->wq_hash, wq_id);
> > > +                     int32_t index =
> > ocs_hw_queue_hash_find(hw->wq_hash, wq_id);
> > > +
> > > +                     if (unlikely(index < 0)) {
> > > +                             ocs_log_err(hw->os, "unknown idx=%#x
> > rid=%#x\n",
> > > +                                         index, rid);
> > > +                             break;
> > > +                     }
> > > +
> > >                       hw_wq_t *wq = hw->hw_wq[index];
> > >
> > >                       /* Submit any HW IOs that are on the WQ pending
> > list */
> > > @@ -9300,7 +9311,8 @@ ocs_hw_cb_link(void *ctx, void *e)
> > >
> > >               hw->link.status = event->status;
> > >
> > > -             for (i = 0; d = hw->domains[i], i < SLI4_MAX_FCFI; i++) {
> > > +             for (i = 0; i < SLI4_MAX_FCFI; i++) {
> > > +                     d = hw->domains[i];
> > >                       if (d != NULL &&
> > >                           hw->callback.domain != NULL) {
> > >                               hw->callback.domain(hw->args.domain,
> > OCS_HW_DOMAIN_LOST, d);
> > > @@ -9322,6 +9334,9 @@ ocs_hw_cb_fip(void *ctx, void *e)
> > >       ocs_domain_t    *domain = NULL;
> > >       sli4_fip_event_t *event = e;
> > >
> > > +     ocs_hw_assert(event);
> > > +     ocs_hw_assert(hw);
> > > +
> > >       /* Find the associated domain object */
> > >       if (event->type == SLI4_FCOE_FIP_FCF_CLEAR_VLINK) {
> > >               ocs_domain_t *d = NULL;
> > > @@ -9330,7 +9345,8 @@ ocs_hw_cb_fip(void *ctx, void *e)
> > >               /* Clear VLINK is different from the other FIP events as
> > it passes back
> > >                * a VPI instead of a FCF index. Check all attached SLI
> > ports for a
> > >                * matching VPI */
> > > -             for (i = 0; d = hw->domains[i], i < SLI4_MAX_FCFI; i++) {
> > > +             for (i = 0; i < SLI4_MAX_FCFI; i++) {
> > > +                     d = hw->domains[i];
> > >                       if (d != NULL) {
> > >                               ocs_sport_t     *sport = NULL;
> > >
> > > @@ -11202,6 +11218,7 @@ target_wqe_timer_nop_cb(ocs_hw_t *hw, int32_t
> > status,
> > >       ocs_hw_io_t *io_next = NULL;
> > >       uint64_t ticks_current = ocs_get_os_ticks();
> > >       uint32_t sec_elapsed;
> > > +     ocs_hw_rtn_e rc;
> > >
> > >       sli4_mbox_command_header_t      *hdr = (sli4_mbox_command_header_t
> > *)mqe;
> > >
> > > @@ -11213,34 +11230,39 @@ target_wqe_timer_nop_cb(ocs_hw_t *hw, int32_t
> > status,
> > >
> > >       /* loop through active WQE list and check for timeouts */
> > >       ocs_lock(&hw->io_lock);
> > > -             ocs_list_foreach_safe(&hw->io_timed_wqe, io, io_next) {
> > > -                     sec_elapsed = ((ticks_current - io->submit_ticks)
> > / ocs_get_os_tick_freq());
> > > +     ocs_list_foreach_safe(&hw->io_timed_wqe, io, io_next) {
> > > +             sec_elapsed = ((ticks_current - io->submit_ticks) /
> > ocs_get_os_tick_freq());
> > >
> > > -                     /*
> > > -                      * If elapsed time > timeout, abort it. No need to
> > check type since
> > > -                      * it wouldn't be on this list unless it was a
> > target WQE
> > > -                      */
> > > -                     if (sec_elapsed > io->tgt_wqe_timeout) {
> > > -                             ocs_log_test(hw->os, "IO timeout xri=0x%x
> > tag=0x%x type=%d\n",
> > > -                                          io->indicator, io->reqtag,
> > io->type);
> > > +             /*
> > > +              * If elapsed time > timeout, abort it. No need to check
> > type since
> > > +              * it wouldn't be on this list unless it was a target WQE
> > > +              */
> > > +             if (sec_elapsed > io->tgt_wqe_timeout) {
> > > +                     ocs_log_test(hw->os, "IO timeout xri=0x%x tag=0x%x
> > type=%d\n",
> > > +                                  io->indicator, io->reqtag, io->type);
> > >
> > > -                             /* remove from active_wqe list so won't
> > try to abort again */
> > > -                             ocs_list_remove(&hw->io_timed_wqe, io);
> > > +                     /* remove from active_wqe list so won't try to
> > abort again */
> > > +                     ocs_list_remove(&hw->io_timed_wqe, io);
> > >
> > > -                             /* save status of "timed out" for when
> > abort completes */
> > > -                             io->status_saved = 1;
> > > -                             io->saved_status =
> > SLI4_FC_WCQE_STATUS_TARGET_WQE_TIMEOUT;
> > > -                             io->saved_ext = 0;
> > > -                             io->saved_len = 0;
> > > +                     /* save status of "timed out" for when abort
> > completes */
> > > +                     io->status_saved = 1;
> > > +                     io->saved_status =
> > SLI4_FC_WCQE_STATUS_TARGET_WQE_TIMEOUT;
> > > +                     io->saved_ext = 0;
> > > +                     io->saved_len = 0;
> > >
> > > -                             /* now abort outstanding IO */
> > > -                             ocs_hw_io_abort(hw, io, FALSE, NULL, NULL);
> > > +                     /* now abort outstanding IO */
> > > +                     rc = ocs_hw_io_abort(hw, io, FALSE, NULL, NULL);
> > > +                     if (rc) {
> > > +                             ocs_log_test(hw->os,
> > > +                                     "abort failed xri=%#x tag=%#x
> > rc=%d\n",
> > > +                                     io->indicator, io->reqtag, rc);
> > >                       }
> > > -                     /*
> > > -                      * need to go through entire list since each IO
> > could have a
> > > -                      * different timeout value
> > > -                      */
> > >               }
> > > +             /*
> > > +              * need to go through entire list since each IO could have
> > a
> > > +              * different timeout value
> > > +              */
> > > +     }
> > >       ocs_unlock(&hw->io_lock);
> > >
> > >       /* if we're not in the middle of shutting down, schedule next
> > timer */
> > >
> > > Modified: head/sys/dev/ocs_fc/ocs_hw_queues.c
> > >
> > ==============================================================================
> > > --- head/sys/dev/ocs_fc/ocs_hw_queues.c       Wed Jan 23 17:28:39 2019
> >       (r343348)
> > > +++ head/sys/dev/ocs_fc/ocs_hw_queues.c       Wed Jan 23 17:34:01 2019
> >       (r343349)
> > > @@ -149,13 +149,16 @@ ocs_hw_init_queues(ocs_hw_t *hw, ocs_hw_qtop_t
> > *qtop)
> > >                               default_lengths[QTOP_CQ] = len;
> > >                               break;
> > >                       }
> > > +
> > > +                     if (!eq || !next_qt) {
> > > +                             goto fail;
> > > +                     }
> > >
> > >                       /* If this CQ is for MRQ, then delay the creation
> > */
> > >                       if (!use_mrq || next_qt->entry != QTOP_RQ) {
> > >                               cq = hw_new_cq(eq, len);
> > >                               if (cq == NULL) {
> > > -                                     hw_queue_teardown(hw);
> > > -                                     return OCS_HW_RTN_NO_MEMORY;
> > > +                                     goto fail;
> > >                               }
> > >                       }
> > >                       break;
> > > @@ -173,11 +176,13 @@ ocs_hw_init_queues(ocs_hw_t *hw, ocs_hw_qtop_t
> > *qtop)
> > >                               hw_queue_teardown(hw);
> > >                               return OCS_HW_RTN_NO_MEMORY;
> > >                       }
> > > +
> > > +                     if (cq == NULL)
> > > +                             goto fail;
> > >
> > >                       wq = hw_new_wq(cq, len, qt->class, hw->ulp_start +
> > qt->ulp);
> > >                       if (wq == NULL) {
> > > -                             hw_queue_teardown(hw);
> > > -                             return OCS_HW_RTN_NO_MEMORY;
> > > +                             goto fail;
> > >                       }
> > >
> > >                       /* Place this WQ on the EQ WQ array */
> > > @@ -249,10 +254,12 @@ ocs_hw_init_queues(ocs_hw_t *hw, ocs_hw_qtop_t
> > *qtop)
> > >                               break;
> > >                       }
> > >
> > > +                     if (cq == NULL)
> > > +                             goto fail;
> > > +
> > >                       mq = hw_new_mq(cq, len);
> > >                       if (mq == NULL) {
> > > -                             hw_queue_teardown(hw);
> > > -                             return OCS_HW_RTN_NO_MEMORY;
> > > +                             goto fail;
> > >                       }
> > >                       break;
> > >
> > > @@ -332,6 +339,9 @@ ocs_hw_init_queues(ocs_hw_t *hw, ocs_hw_qtop_t *qtop)
> > >       }
> > >
> > >       return OCS_HW_RTN_SUCCESS;
> > > +fail:
> > > +     hw_queue_teardown(hw);
> > > +     return OCS_HW_RTN_NO_MEMORY;
> > >
> > >  }
> > >
> > > @@ -737,8 +747,9 @@ error:
> > >       for (i = 0; i < num_rq_pairs; i++) {
> > >               if (rqs[i] != NULL) {
> > >                       if (rqs[i]->rq_tracker != NULL) {
> > > -                             ocs_free(hw->os, rq->rq_tracker,
> > > -                                      sizeof(ocs_hw_sequence_t*) *
> > rq->entry_count);
> > > +                             ocs_free(hw->os, rqs[i]->rq_tracker,
> > > +                                      sizeof(ocs_hw_sequence_t*) *
> > > +                                      rqs[i]->entry_count);
> > >                       }
> > >                       ocs_free(hw->os, rqs[i], sizeof(*rqs[i]));
> > >               }
> > > @@ -861,9 +872,9 @@ hw_del_wq(hw_wq_t *wq)
> > >  void
> > >  hw_del_rq(hw_rq_t *rq)
> > >  {
> > > -     ocs_hw_t *hw = rq->cq->eq->hw;
> > >
> > >       if (rq != NULL) {
> > > +             ocs_hw_t *hw = rq->cq->eq->hw;
> > >               /* Free RQ tracker */
> > >               if (rq->rq_tracker != NULL) {
> > >                       ocs_free(hw->os, rq->rq_tracker,
> > sizeof(ocs_hw_sequence_t*) * rq->entry_count);
> > >
> > > Modified: head/sys/dev/ocs_fc/ocs_ioctl.c
> > >
> > ==============================================================================
> > > --- head/sys/dev/ocs_fc/ocs_ioctl.c   Wed Jan 23 17:28:39 2019
> > (r343348)
> > > +++ head/sys/dev/ocs_fc/ocs_ioctl.c   Wed Jan 23 17:34:01 2019
> > (r343349)
> > > @@ -243,9 +243,13 @@ ocs_process_mbx_ioctl(ocs_t *ocs,
> > ocs_ioctl_elxu_mbox_
> > >        *  6. ioctl code releases the lock
> > >        */
> > >       mtx_lock(&ocs->dbg_lock);
> > > -             ocs_hw_command(&ocs->hw, mcmd->payload, OCS_CMD_NOWAIT,
> > > -                             __ocs_ioctl_mbox_cb, ocs);
> > > -             msleep(ocs, &ocs->dbg_lock, 0, "ocsmbx", 0);
> > > +     if (ocs_hw_command(&ocs->hw, mcmd->payload, OCS_CMD_NOWAIT,
> > > +                     __ocs_ioctl_mbox_cb, ocs)) {
> > > +
> > > +             device_printf(ocs->dev, "%s: command- %x failed\n",
> > __func__,
> > > +                     ((sli4_mbox_command_header_t
> > *)mcmd->payload)->command);
> > > +     }
> > > +     msleep(ocs, &ocs->dbg_lock, 0, "ocsmbx", 0);
> > >       mtx_unlock(&ocs->dbg_lock);
> > >
> > >       if( SLI4_MBOX_COMMAND_SLI_CONFIG == ((sli4_mbox_command_header_t
> > *)mcmd->payload)->command
> > >
> > > Modified: head/sys/dev/ocs_fc/ocs_mgmt.c
> > >
> > ==============================================================================
> > > --- head/sys/dev/ocs_fc/ocs_mgmt.c    Wed Jan 23 17:28:39 2019
> > (r343348)
> > > +++ head/sys/dev/ocs_fc/ocs_mgmt.c    Wed Jan 23 17:34:01 2019
> > (r343349)
> > > @@ -2129,7 +2129,7 @@ set_port_protocol(ocs_t *ocs, char *name, char
> > *value)
> > >               if (ocs_sem_p(&(result.semaphore), OCS_SEM_FOREVER) != 0) {
> > >                       /* Undefined failure */
> > >                       ocs_log_err(ocs, "ocs_sem_p failed\n");
> > > -                     rc = -ENXIO;
> > > +                     return -ENXIO;
> > >               }
> > >               if (result.status == 0) {
> > >                       /* Success. */
> > > @@ -2321,7 +2321,7 @@ set_active_profile(ocs_t *ocs, char *name, char
> > *value
> > >               if (ocs_sem_p(&(result.semaphore), OCS_SEM_FOREVER) != 0) {
> > >                       /* Undefined failure */
> > >                       ocs_log_err(ocs, "ocs_sem_p failed\n");
> > > -                     rc = -ENXIO;
> > > +                     return -ENXIO;
> > >               }
> > >               if (result.status == 0) {
> > >                       /* Success. */
> > > @@ -2527,8 +2527,8 @@ set_nv_wwn(ocs_t *ocs, char *name, char *wwn_p)
> > >       char *wwpn_p = NULL;
> > >       char *wwnn_p = NULL;
> > >       int32_t rc = -1;
> > > -     int wwpn;
> > > -     int wwnn;
> > > +     int wwpn = 0;
> > > +     int wwnn = 0;
> > >       int i;
> > >
> > >       /* This is a read-modify-write operation, so first we have to read
> > > @@ -2556,8 +2556,13 @@ set_nv_wwn(ocs_t *ocs, char *name, char *wwn_p)
> > >               wwnn_p = wwn_p;
> > >       }
> > >
> > > -     wwpn = ocs_strcmp(wwpn_p, "NA");
> > > -     wwnn = ocs_strcmp(wwnn_p, "NA");
> > > +     if (wwpn_p != NULL) {
> > > +             wwpn = ocs_strcmp(wwpn_p, "NA");
> > > +     }
> > > +
> > > +     if (wwnn_p != NULL) {
> > > +             wwnn = ocs_strcmp(wwnn_p, "NA");
> > > +     }
> > >
> > >       /* Parse the new WWPN */
> > >       if ((wwpn_p != NULL) && (wwpn != 0)) {
> > >
> > > Modified: head/sys/dev/ocs_fc/ocs_node.c
> > >
> > ==============================================================================
> > > --- head/sys/dev/ocs_fc/ocs_node.c    Wed Jan 23 17:28:39 2019
> > (r343348)
> > > +++ head/sys/dev/ocs_fc/ocs_node.c    Wed Jan 23 17:34:01 2019
> > (r343349)
> > > @@ -253,7 +253,7 @@ ocs_node_create_pool(ocs_t *ocs, uint32_t node_count)
> > >
> > >       if (0 == ocs_hw_get(&ocs->hw, OCS_HW_MAX_SGE, &max_sge) &&
> > >           0 == ocs_hw_get(&ocs->hw, OCS_HW_N_SGL, &num_sgl)) {
> > > -             max_xfer_size = max_sge * num_sgl;
> > > +             max_xfer_size = (max_sge * (uint64_t)num_sgl);
> > >       } else {
> > >               max_xfer_size = 65536;
> > >       }
> > >
> > > Modified: head/sys/dev/ocs_fc/ocs_pci.c
> > >
> > ==============================================================================
> > > --- head/sys/dev/ocs_fc/ocs_pci.c     Wed Jan 23 17:28:39 2019
> > (r343348)
> > > +++ head/sys/dev/ocs_fc/ocs_pci.c     Wed Jan 23 17:34:01 2019
> > (r343349)
> > > @@ -591,7 +591,7 @@ ocs_device_detach(ocs_t *ocs)
> > >                  }
> > >
> > >               ocs_cam_detach(ocs);
> > > -             ocs_free(ocs, ocs->fcports, sizeof(ocs->fcports));
> > > +             ocs_free(ocs, ocs->fcports, sizeof(*(ocs->fcports)));
> > >
> > >               for (i = 0; (io = ocs_io_get_instance(ocs, i)); i++) {
> > >                       if (bus_dmamap_destroy(ocs->buf_dmat,
> > io->tgt_io.dmap)) {
> > >
> > > Modified: head/sys/dev/ocs_fc/ocs_xport.c
> > >
> > ==============================================================================
> > > --- head/sys/dev/ocs_fc/ocs_xport.c   Wed Jan 23 17:28:39 2019
> > (r343348)
> > > +++ head/sys/dev/ocs_fc/ocs_xport.c   Wed Jan 23 17:34:01 2019
> > (r343349)
> > > @@ -292,10 +292,6 @@ ocs_xport_attach_cleanup:
> > >               ocs_node_free_pool(ocs);
> > >       }
> > >
> > > -     if (rq_threads_created) {
> > > -             ocs_xport_rq_threads_teardown(xport);
> > > -     }
> > > -
> > >       return -1;
> > >  }
> > >
> > >
> > > Modified: head/sys/dev/ocs_fc/sli4.c
> > >
> > ==============================================================================
> > > --- head/sys/dev/ocs_fc/sli4.c        Wed Jan 23 17:28:39 2019
> > (r343348)
> > > +++ head/sys/dev/ocs_fc/sli4.c        Wed Jan 23 17:34:01 2019
> > (r343349)
> > > @@ -1867,10 +1867,7 @@ sli_cmd_common_create_cq(sli4_t *sli4, void *buf,
> > size
> > >               }
> > >       }
> > >               break;
> > > -     default:
> > > -             ocs_log_test(sli4->os, "unsupported IF_TYPE %d\n",
> > if_type);
> > > -             return -1;
> > > -     }
> > > +     }
> > >
> > >       return (sli_config_off + cmd_size);
> > >  }
> > > @@ -4637,6 +4634,8 @@ sli_cq_alloc_set(sli4_t *sli4, sli4_queue_t *qs[],
> > uin
> > >               return -1;
> > >       }
> > >
> > > +     memset(&dma, 0, sizeof(dma));
> > > +
> > >       /* Align the queue DMA memory */
> > >       for (i = 0; i < num_cqs; i++) {
> > >               if (__sli_queue_init(sli4, qs[i], SLI_QTYPE_CQ,
> > SLI4_CQE_BYTES,
> > > @@ -4886,7 +4885,7 @@ sli_queue_reset(sli4_t *sli4, sli4_queue_t *q)
> > >       }
> > >
> > >       if (q->dma.virt != NULL) {
> > > -             ocs_memset(q->dma.virt, 0, (q->size * q->length));
> > > +             ocs_memset(q->dma.virt, 0, (q->size *
> > (uint64_t)q->length));
> > >       }
> > >
> > >       ocs_unlock(&q->lock);
> > > @@ -8479,6 +8478,8 @@ sli_fc_rq_set_alloc(sli4_t *sli4, uint32_t
> > num_rq_pair
> > >       ocs_dma_t dma;
> > >       sli4_res_common_create_queue_set_t *rsp = NULL;
> > >       sli4_req_fcoe_rq_create_v2_t    *req = NULL;
> > > +
> > > +     ocs_memset(&dma, 0, sizeof(dma));
> > >
> > >       for (i = 0; i < (num_rq_pairs * 2); i++) {
> > >               if (__sli_queue_init(sli4, qs[i], SLI_QTYPE_RQ,
> > SLI4_FCOE_RQE_SIZE,
> > >
> > >
> >
> > --
> > Rod Grimes
> > rgrimes at freebsd.org
> >

-- 
Rod Grimes                                                 rgrimes at freebsd.org


More information about the svn-src-all mailing list