From e879d17197df92b001b0667c1d190a09298aba81 Mon Sep 17 00:00:00 2001 From: mjacob Date: Thu, 10 Oct 2002 17:29:05 +0000 Subject: 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 --- sys/dev/isp/isp_freebsd.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) (limited to 'sys/dev/isp') 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: -- cgit v1.1