From owner-svn-src-head@FreeBSD.ORG Wed Jun 2 23:31:28 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 01C091065672; Wed, 2 Jun 2010 23:31:28 +0000 (UTC) (envelope-from mjacob@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DBE4C8FC1C; Wed, 2 Jun 2010 23:31:27 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o52NVR4x000438; Wed, 2 Jun 2010 23:31:27 GMT (envelope-from mjacob@svn.freebsd.org) Received: (from mjacob@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o52NVRHY000433; Wed, 2 Jun 2010 23:31:27 GMT (envelope-from mjacob@svn.freebsd.org) Message-Id: <201006022331.o52NVRHY000433@svn.freebsd.org> From: Matt Jacob Date: Wed, 2 Jun 2010 23:31:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208761 - head/sys/dev/isp X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 Jun 2010 23:31:28 -0000 Author: mjacob Date: Wed Jun 2 23:31:27 2010 New Revision: 208761 URL: http://svn.freebsd.org/changeset/base/208761 Log: Various minor and not so minor fixes suggested by Coverity. In at least one case, it's amazing that target mode worked at all. Found by: Coverity. MFC after: 2 weeks Modified: head/sys/dev/isp/isp.c head/sys/dev/isp/isp_freebsd.c head/sys/dev/isp/isp_library.c head/sys/dev/isp/isp_pci.c Modified: head/sys/dev/isp/isp.c ============================================================================== --- head/sys/dev/isp/isp.c Wed Jun 2 21:59:13 2010 (r208760) +++ head/sys/dev/isp/isp.c Wed Jun 2 23:31:27 2010 (r208761) @@ -3936,14 +3936,18 @@ isp_login_device(ispsoftc_t *isp, int ch i = lim; } break; - } else if (r != MBOX_LOOP_ID_USED) { + } else if ((r & 0xffff) == MBOX_LOOP_ID_USED) { + /* + * Try the next loop id. + */ + *ohp = handle; + handle = isp_nxt_handle(isp, chan, handle); + } else { + /* + * Give up. + */ i = lim; break; - } else if (r == MBOX_TIMEOUT) { - return (-1); - } else { - *ohp = handle; - handle = isp_nxt_handle(isp, chan, *ohp); } } @@ -4313,8 +4317,7 @@ isp_start(XS_T *xs) reqp->req_header.rqs_entry_type = RQSTYPE_REQUEST; } } - /* reqp->req_header.rqs_flags = 0; */ - /* reqp->req_header.rqs_seqno = 0; */ + if (IS_24XX(isp)) { int ttype; if (XS_TAG_P(xs)) { @@ -4363,37 +4366,45 @@ isp_start(XS_T *xs) reqp->req_flags = XS_TAG_TYPE(xs); } } - cdbp = reqp->req_cdb; + tptr = &reqp->req_time; if (IS_SCSI(isp)) { reqp->req_target = target | (XS_CHANNEL(xs) << 7); reqp->req_lun_trn = XS_LUN(xs); reqp->req_cdblen = XS_CDBLEN(xs); + cdbp = reqp->req_cdb; } else if (IS_24XX(isp)) { + ispreqt7_t *t7 = (ispreqt7_t *)local; fcportdb_t *lp; lp = &FCPARAM(isp, XS_CHANNEL(xs))->portdb[hdlidx]; - ((ispreqt7_t *)reqp)->req_nphdl = target; - ((ispreqt7_t *)reqp)->req_tidlo = lp->portid; - ((ispreqt7_t *)reqp)->req_tidhi = lp->portid >> 16; - ((ispreqt7_t *)reqp)->req_vpidx = ISP_GET_VPIDX(isp, XS_CHANNEL(xs)); + t7->req_nphdl = target; + t7->req_tidlo = lp->portid; + t7->req_tidhi = lp->portid >> 16; + t7->req_vpidx = ISP_GET_VPIDX(isp, XS_CHANNEL(xs)); if (XS_LUN(xs) > 256) { - ((ispreqt7_t *)reqp)->req_lun[0] = XS_LUN(xs) >> 8; - ((ispreqt7_t *)reqp)->req_lun[0] |= 0x40; + t7->req_lun[0] = XS_LUN(xs) >> 8; + t7->req_lun[0] |= 0x40; } - ((ispreqt7_t *)reqp)->req_lun[1] = XS_LUN(xs); - cdbp = ((ispreqt7_t *)reqp)->req_cdb; - tptr = &((ispreqt7_t *)reqp)->req_time; + t7->req_lun[1] = XS_LUN(xs); + cdbp = t7->req_cdb; + tptr = &t7->req_time; } else if (ISP_CAP_2KLOGIN(isp)) { - ((ispreqt2e_t *)reqp)->req_target = target; - ((ispreqt2e_t *)reqp)->req_scclun = XS_LUN(xs); + ispreqt2e_t *t2e = (ispreqt2e_t *)local; + t2e->req_target = target; + t2e->req_scclun = XS_LUN(xs); + cdbp = t2e->req_cdb; } else if (ISP_CAP_SCCFW(isp)) { - ((ispreqt2_t *)reqp)->req_target = target; - ((ispreqt2_t *)reqp)->req_scclun = XS_LUN(xs); + ispreqt2_t *t2 = (ispreqt2_t *)local; + t2->req_target = target; + t2->req_scclun = XS_LUN(xs); + cdbp = t2->req_cdb; } else { - ((ispreqt2_t *)reqp)->req_target = target; - ((ispreqt2_t *)reqp)->req_lun_trn = XS_LUN(xs); + ispreqt2_t *t2 = (ispreqt2_t *)local; + t2->req_target = target; + t2->req_lun_trn = XS_LUN(xs); + cdbp = t2->req_cdb; } ISP_MEMCPY(cdbp, XS_CDBP(xs), XS_CDBLEN(xs)); Modified: head/sys/dev/isp/isp_freebsd.c ============================================================================== --- head/sys/dev/isp/isp_freebsd.c Wed Jun 2 21:59:13 2010 (r208760) +++ head/sys/dev/isp/isp_freebsd.c Wed Jun 2 23:31:27 2010 (r208761) @@ -284,7 +284,7 @@ isp_detach(ispsoftc_t *isp) config_intrhook_disestablish(&isp->isp_osinfo.ehook); isp->isp_osinfo.ehook_active = 0; } - if (isp->isp_osinfo.devq == NULL) { + if (isp->isp_osinfo.devq != NULL) { cam_simq_free(isp->isp_osinfo.devq); isp->isp_osinfo.devq = NULL; } @@ -1910,7 +1910,7 @@ isp_handle_platform_atio2(ispsoftc_t *is tstate_t *tptr; struct ccb_accept_tio *atiop; uint16_t nphdl; - atio_private_data_t *atp = NULL; + atio_private_data_t *atp; inot_private_data_t *ntp; /* @@ -2063,9 +2063,6 @@ isp_handle_platform_atio2(ispsoftc_t *is rls_lun_statep(isp, tptr); return; noresrc: - if (atp) { - isp_put_atpd(isp, tptr, atp); - } ntp = isp_get_ntpd(isp, tptr); if (ntp == NULL) { rls_lun_statep(isp, tptr); @@ -2500,7 +2497,7 @@ isp_handle_platform_notify_fc(ispsoftc_t lun = inp->in_lun; } if (ISP_CAP_2KLOGIN(isp)) { - loopid = ((in_fcentry_e_t *)inot)->in_iid; + loopid = ((in_fcentry_e_t *)inp)->in_iid; } else { loopid = inp->in_iid; } Modified: head/sys/dev/isp/isp_library.c ============================================================================== --- head/sys/dev/isp/isp_library.c Wed Jun 2 21:59:13 2010 (r208760) +++ head/sys/dev/isp/isp_library.c Wed Jun 2 23:31:27 2010 (r208761) @@ -1338,7 +1338,7 @@ isp_put_vp_ctrl_info(ispsoftc_t *isp, vp ISP_IOXPUT_16(isp, src->vp_ctrl_idmap[i], &dst->vp_ctrl_idmap[i]); } for (i = 0; i < ASIZE(src->vp_ctrl_reserved); i++) { - ISP_IOXPUT_8(isp, src->vp_ctrl_idmap[i], &dst->vp_ctrl_idmap[i]); + ISP_IOXPUT_8(isp, src->vp_ctrl_reserved[i], &dst->vp_ctrl_reserved[i]); } } Modified: head/sys/dev/isp/isp_pci.c ============================================================================== --- head/sys/dev/isp/isp_pci.c Wed Jun 2 21:59:13 2010 (r208760) +++ head/sys/dev/isp/isp_pci.c Wed Jun 2 23:31:27 2010 (r208761) @@ -641,7 +641,7 @@ isp_pci_attach(device_t dev) int isp_nvports = 0; uint32_t data, cmd, linesz, did; struct isp_pcisoftc *pcs; - ispsoftc_t *isp = NULL; + ispsoftc_t *isp; size_t psize, xsize; char fwname[32]; @@ -966,30 +966,28 @@ isp_pci_attach(device_t dev) return (0); bad: - if (pcs && pcs->ih) { + if (pcs->ih) { (void) bus_teardown_intr(dev, irq, pcs->ih); } - if (locksetup && isp) { + if (locksetup) { mtx_destroy(&isp->isp_osinfo.lock); } if (irq) { (void) bus_release_resource(dev, SYS_RES_IRQ, iqd, irq); } - if (pcs && pcs->msicount) { + if (pcs->msicount) { pci_release_msi(dev); } if (regs) { (void) bus_release_resource(dev, rtp, rgd, regs); } - if (pcs) { - if (pcs->pci_isp.isp_param) { - free(pcs->pci_isp.isp_param, M_DEVBUF); - pcs->pci_isp.isp_param = NULL; - } - if (pcs->pci_isp.isp_osinfo.pc.ptr) { - free(pcs->pci_isp.isp_osinfo.pc.ptr, M_DEVBUF); - pcs->pci_isp.isp_osinfo.pc.ptr = NULL; - } + if (pcs->pci_isp.isp_param) { + free(pcs->pci_isp.isp_param, M_DEVBUF); + pcs->pci_isp.isp_param = NULL; + } + if (pcs->pci_isp.isp_osinfo.pc.ptr) { + free(pcs->pci_isp.isp_osinfo.pc.ptr, M_DEVBUF); + pcs->pci_isp.isp_osinfo.pc.ptr = NULL; } return (ENXIO); } @@ -1725,6 +1723,8 @@ tdma2(void *arg, bus_dma_segment_t *dm_s bus_dmamap_sync(isp->isp_osinfo.dmat, PISP_PCMD(csio)->dmap, BUS_DMASYNC_PREREAD); ddir = ISP_FROM_DEVICE; } else { + dm_segs = NULL; + nseg = 0; ddir = ISP_NOXFR; } } else {