diff --git a/sys/bus/cam/scsi/scsi_sg.c b/sys/bus/cam/scsi/scsi_sg.c --- a/sys/bus/cam/scsi/scsi_sg.c +++ b/sys/bus/cam/scsi/scsi_sg.c @@ -569,7 +569,10 @@ error = copyout(&req, ap->a_data, sizeof(req)); if ((error == 0) && (csio->ccb_h.status & CAM_AUTOSNS_VALID) && (req.sbp != NULL)) { - req.sb_len_wr = req.mx_sb_len - csio->sense_resid; + if (csio->sense_resid >= req.mx_sb_len) + req.sb_len_wr = 0; + else + req.sb_len_wr = req.mx_sb_len - csio->sense_resid; error = copyout(&csio->sense_data, req.sbp, req.sb_len_wr); }