diff --git a/lib/mpi/mpicoder.c b/lib/mpi/mpicoder.c
index c20ef27ad87675a15ee8ca25e9d2d19798268e7b..c7e0a705eecfb1c389dcef39ee4f97c451728d44 100644
--- a/lib/mpi/mpicoder.c
+++ b/lib/mpi/mpicoder.c
@@ -446,8 +446,11 @@ MPI mpi_read_raw_from_sgl(struct scatterlist *sgl, unsigned int len)
 		const u8 *buff = sg_virt(sg);
 		int len = sg->length;
 
-		while (len-- && !*buff++)
+		while (len && !*buff) {
 			lzeros++;
+			len--;
+			buff++;
+		}
 
 		if (len && *buff)
 			break;