aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/mpr
diff options
context:
space:
mode:
authorAlan Somers <asomers@FreeBSD.org>2023-03-01 18:53:46 +0000
committerAlan Somers <asomers@FreeBSD.org>2023-03-02 20:31:06 +0000
commit72aad3f9028af12e6c56a3a461b46a153abd7b24 (patch)
tree5bb9765df3055db84feb1b81b960997747187d5c /sys/dev/mpr
parent0fed8288c3fd75a57e3fd4649cded9eac07a6758 (diff)
Diffstat (limited to 'sys/dev/mpr')
-rw-r--r--sys/dev/mpr/mpr_user.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/dev/mpr/mpr_user.c b/sys/dev/mpr/mpr_user.c
index d04aaa24ea0b..5b5c11dd4a65 100644
--- a/sys/dev/mpr/mpr_user.c
+++ b/sys/dev/mpr/mpr_user.c
@@ -863,7 +863,7 @@ mpr_user_pass_thru(struct mpr_softc *sc, mpr_pass_thru_t *data)
}
mpr_unlock(sc);
copyout(cm->cm_reply, PTRIN(data->PtrReply),
- data->ReplySize);
+ MIN(sz, data->ReplySize));
mpr_lock(sc);
}
mprsas_free_tm(sc, cm);
@@ -1087,7 +1087,8 @@ mpr_user_pass_thru(struct mpr_softc *sc, mpr_pass_thru_t *data)
data->ReplySize, sz);
}
mpr_unlock(sc);
- copyout(cm->cm_reply, PTRIN(data->PtrReply), data->ReplySize);
+ copyout(cm->cm_reply, PTRIN(data->PtrReply),
+ MIN(sz, data->ReplySize));
mpr_lock(sc);
if ((function == MPI2_FUNCTION_SCSI_IO_REQUEST) ||
@@ -2065,7 +2066,7 @@ mpr_user_event_report(struct mpr_softc *sc, mpr_event_report_t *data)
if ((size >= sizeof(sc->recorded_events)) && (status == 0)) {
mpr_unlock(sc);
if (copyout((void *)sc->recorded_events,
- PTRIN(data->PtrEvents), size) != 0)
+ PTRIN(data->PtrEvents), sizeof(sc->recorded_events)) != 0)
status = EFAULT;
mpr_lock(sc);
} else {