Merge branch 'drm-vmwgfx-fixes' of ssh://people.freedesktop.org/~syeh/repos_linux...
[cascardo/linux.git] / lib / mpi / mpicoder.c
index c6272ae..5a0f75a 100644 (file)
@@ -363,6 +363,9 @@ MPI mpi_read_raw_from_sgl(struct scatterlist *sgl, unsigned int nbytes)
                lzeros = 0;
        }
 
+       miter.consumed = lzeros;
+       sg_miter_stop(&miter);
+
        nbytes -= lzeros;
        nbits = nbytes * 8;
        if (nbits > MAX_EXTERN_MPI_BITS) {
@@ -390,7 +393,10 @@ MPI mpi_read_raw_from_sgl(struct scatterlist *sgl, unsigned int nbytes)
        z = BYTES_PER_MPI_LIMB - nbytes % BYTES_PER_MPI_LIMB;
        z %= BYTES_PER_MPI_LIMB;
 
-       for (;;) {
+       while (sg_miter_next(&miter)) {
+               buff = miter.addr;
+               len = miter.length;
+
                for (x = 0; x < len; x++) {
                        a <<= 8;
                        a |= *buff++;
@@ -400,12 +406,6 @@ MPI mpi_read_raw_from_sgl(struct scatterlist *sgl, unsigned int nbytes)
                        }
                }
                z += x;
-
-               if (!sg_miter_next(&miter))
-                       break;
-
-               buff = miter.addr;
-               len = miter.length;
        }
 
        return val;