diff --git a/lib/mpi/mpicoder.c b/lib/mpi/mpicoder.c index 39c4c67310946f0fa3fb96fd3b8ae79cf3fe4b97..3cb6bd148fa9e38e8634c592abb8bd85e142c480 100644 --- a/lib/mpi/mpicoder.c +++ b/lib/mpi/mpicoder.c @@ -504,7 +504,8 @@ MPI mpi_read_raw_from_sgl(struct scatterlist *sgl, unsigned int nbytes) while (sg_miter_next(&miter)) { buff = miter.addr; - len = miter.length; + len = min_t(unsigned, miter.length, nbytes); + nbytes -= len; for (x = 0; x < len; x++) { a <<= 8;