diff options
author | mjacob <mjacob@FreeBSD.org> | 2002-10-10 17:29:05 +0000 |
---|---|---|
committer | mjacob <mjacob@FreeBSD.org> | 2002-10-10 17:29:05 +0000 |
commit | e879d17197df92b001b0667c1d190a09298aba81 (patch) | |
tree | f736ef7a6c9b24c0861e784847134b5606dd0cdf /sys/dev/isp | |
parent | e16c978cb1ccd495b9e56bf46a39ff7da85fd16f (diff) | |
download | FreeBSD-src-e879d17197df92b001b0667c1d190a09298aba81.zip FreeBSD-src-e879d17197df92b001b0667c1d190a09298aba81.tar.gz |
From PHK's flex tool- we can get -1 returned from xpt_path_target_id,
so don't index off of it.
MFC after: 1 day
Diffstat (limited to 'sys/dev/isp')
-rw-r--r-- | sys/dev/isp/isp_freebsd.c | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/sys/dev/isp/isp_freebsd.c b/sys/dev/isp/isp_freebsd.c index c80c32c..5e1011d 100644 --- a/sys/dev/isp/isp_freebsd.c +++ b/sys/dev/isp/isp_freebsd.c @@ -1828,24 +1828,27 @@ isp_cam_async(void *cbarg, u_int32_t code, struct cam_path *path, void *arg) int tgt; tgt = xpt_path_target_id(path); - ISP_LOCK(isp); - sdp += cam_sim_bus(sim); - nflags = sdp->isp_devparam[tgt].nvrm_flags; + if (tgt >= 0) { + sdp += cam_sim_bus(sim); + ISP_LOCK(isp); + nflags = sdp->isp_devparam[tgt].nvrm_flags; #ifndef ISP_TARGET_MODE - nflags &= DPARM_SAFE_DFLT; - if (isp->isp_loaded_fw) { - nflags |= DPARM_NARROW | DPARM_ASYNC; - } + nflags &= DPARM_SAFE_DFLT; + if (isp->isp_loaded_fw) { + nflags |= DPARM_NARROW | DPARM_ASYNC; + } #else - nflags = DPARM_DEFAULT; + nflags = DPARM_DEFAULT; #endif - oflags = sdp->isp_devparam[tgt].goal_flags; - sdp->isp_devparam[tgt].goal_flags = nflags; - sdp->isp_devparam[tgt].dev_update = 1; - isp->isp_update |= (1 << cam_sim_bus(sim)); - (void) isp_control(isp, ISPCTL_UPDATE_PARAMS, NULL); - sdp->isp_devparam[tgt].goal_flags = oflags; - ISP_UNLOCK(isp); + oflags = sdp->isp_devparam[tgt].goal_flags; + sdp->isp_devparam[tgt].goal_flags = nflags; + sdp->isp_devparam[tgt].dev_update = 1; + isp->isp_update |= (1 << cam_sim_bus(sim)); + (void) isp_control(isp, + ISPCTL_UPDATE_PARAMS, NULL); + sdp->isp_devparam[tgt].goal_flags = oflags; + ISP_UNLOCK(isp); + } } break; default: |