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 @@ -946,7 +946,12 @@ /* Just use the segments provided */ segs = (struct bus_dma_segment *)csio->data_ptr; - dptexecuteccb(dccb, segs, csio->sglist_cnt, 0); + if (csio->sglist_cnt > dpt->sgsize) { + ccb->ccb_h.status = CAM_REQ_TOO_BIG; + xpt_done(ccb); + break; + } + dptexecuteccb(dccb, segs, csio->sglist_cnt, 0); } } else { /*