DF-3676 / fix.diff
--- a/sys/dev/disk/mpt/mpt_cam.c +++ b/sys/dev/disk/mpt/mpt_cam.c @@ -4628,8 +4628,13 @@ mpt_abort_target_ccb(struct mpt_softc *mpt, union ccb *ccb) mpt_lprt(mpt, MPT_PRT_DEBUG, "aborting ccb %p\n", accb); if (ccb->ccb_h.target_lun == CAM_LUN_WILDCARD) { trtp = &mpt->trt_wildcard; - } else { + } else if (ccb->ccb_h.target_lun < MPT_MAX_LUNS) { trtp = &mpt->trt[ccb->ccb_h.target_lun]; + } else { + mpt_prt(mpt, "mpt_abort_target_ccb: bad lun %u\n", + ccb->ccb_h.target_lun); + return (CAM_LUN_INVALID); } if (accb->ccb_h.func_code == XPT_ACCEPT_TARGET_IO) { |