]> www.infradead.org Git - users/hch/block.git/commitdiff
block: use bvec_kmap_local in bio_integrity_process bvec-kmap-local
authorChristoph Hellwig <hch@lst.de>
Thu, 20 May 2021 12:21:13 +0000 (14:21 +0200)
committerChristoph Hellwig <hch@lst.de>
Fri, 23 Jul 2021 05:39:50 +0000 (07:39 +0200)
Using local kmaps slightly reduces the chances to stray writes, and
the bvec interface cleans up the code a little bit.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
block/bio-integrity.c

index 4b4eb8964a6f986a0983b455068d350b1b389ea6..8f54d49dc50015f5734a49900e6656cb68ea69b9 100644 (file)
@@ -172,18 +172,16 @@ static blk_status_t bio_integrity_process(struct bio *bio,
        iter.prot_buf = prot_buf;
 
        __bio_for_each_segment(bv, bio, bviter, *proc_iter) {
-               void *kaddr = kmap_atomic(bv.bv_page);
+               void *kaddr = bvec_kmap_local(&bv);
 
-               iter.data_buf = kaddr + bv.bv_offset;
+               iter.data_buf = kaddr;
                iter.data_size = bv.bv_len;
-
                ret = proc_fn(&iter);
-               if (ret) {
-                       kunmap_atomic(kaddr);
-                       return ret;
-               }
+               kunmap_local(kaddr);
+
+               if (ret)
+                       break;
 
-               kunmap_atomic(kaddr);
        }
        return ret;
 }