DF-1465 / fix.diff
diff --git a/sys/dev/raid/dpt/dpt_scsi.c b/sys/dev/raid/dpt/dpt_scsi.c --- a/sys/dev/raid/dpt/dpt_scsi.c +++ b/sys/dev/raid/dpt/dpt_scsi.c @@ -855,7 +855,7 @@ ? 1 : 0; eccb->DataOut = (ccb->ccb_h.flags & CAM_DIR_OUT) ? 1 : 0; eccb->DataIn = (ccb->ccb_h.flags & CAM_DIR_IN) ? 1 : 0; - eccb->reqlen = csio->sense_len; + eccb->reqlen = imin(csio->sense_len, (int)sizeof(struct scsi_sense_data)); eccb->cp_id = ccb->ccb_h.target_id; eccb->cp_channel = cam_sim_bus(sim); eccb->cp_LUN = ccb->ccb_h.target_lun; @@ -1519,7 +1519,7 @@ || dpt->sp->ccb_busaddr >= dpt->dpt_ccb_busend) { kprintf("Encountered bogus status packet\n"); status = dpt_inb(dpt, HA_RSTATUS); - return; + continue; } dccb = dptccbptov(dpt, dpt->sp->ccb_busaddr); |