]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - lib/scatterlist.c
lib/strscpy: Shut up KASAN false-positives in strscpy()
[mirror_ubuntu-bionic-kernel.git] / lib / scatterlist.c
index 7c1c55f7daaa832df2aef731cd218d4ed80f44dc..4c87fb589667eda3554e468d8e174eed7958902e 100644 (file)
@@ -537,17 +537,18 @@ static bool sg_miter_get_next_page(struct sg_mapping_iter *miter)
 {
        if (!miter->__remaining) {
                struct scatterlist *sg;
-               unsigned long pgoffset;
 
                if (!__sg_page_iter_next(&miter->piter))
                        return false;
 
                sg = miter->piter.sg;
-               pgoffset = miter->piter.sg_pgoffset;
 
-               miter->__offset = pgoffset ? 0 : sg->offset;
+               miter->__offset = miter->piter.sg_pgoffset ? 0 : sg->offset;
+               miter->piter.sg_pgoffset += miter->__offset >> PAGE_SHIFT;
+               miter->__offset &= PAGE_SIZE - 1;
                miter->__remaining = sg->offset + sg->length -
-                               (pgoffset << PAGE_SHIFT) - miter->__offset;
+                                    (miter->piter.sg_pgoffset << PAGE_SHIFT) -
+                                    miter->__offset;
                miter->__remaining = min_t(unsigned long, miter->__remaining,
                                           PAGE_SIZE - miter->__offset);
        }