summaryrefslogtreecommitdiffstats
path: root/sys/dev/isp
diff options
context:
space:
mode:
authormjacob <mjacob@FreeBSD.org>2002-10-10 17:29:05 +0000
committermjacob <mjacob@FreeBSD.org>2002-10-10 17:29:05 +0000
commite879d17197df92b001b0667c1d190a09298aba81 (patch)
treef736ef7a6c9b24c0861e784847134b5606dd0cdf /sys/dev/isp
parente16c978cb1ccd495b9e56bf46a39ff7da85fd16f (diff)
downloadFreeBSD-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.c33
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:
OpenPOWER on IntegriCloud