Very straightforward conversion to the new function in all four spots.

Signed-off-by: Logan Gunthorpe <log...@deltatee.com>
Cc: Alasdair Kergon <a...@redhat.com>
Cc: Mike Snitzer <snit...@redhat.com>
---
 drivers/md/dm-crypt.c | 39 ++++++++++++++++++++++++++-------------
 1 file changed, 26 insertions(+), 13 deletions(-)

diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
index 8dbecf1..841f1fc 100644
--- a/drivers/md/dm-crypt.c
+++ b/drivers/md/dm-crypt.c
@@ -635,9 +635,12 @@ static int crypt_iv_lmk_gen(struct crypt_config *cc, u8 
*iv,
 
        if (bio_data_dir(dmreq->ctx->bio_in) == WRITE) {
                sg = crypt_get_sg_data(cc, dmreq->sg_in);
-               src = kmap_atomic(sg_page(sg));
-               r = crypt_iv_lmk_one(cc, iv, dmreq, src + sg->offset);
-               kunmap_atomic(src);
+               src = sg_map(sg, 0, SG_KMAP_ATOMIC);
+               if (IS_ERR(src))
+                       return PTR_ERR(src);
+
+               r = crypt_iv_lmk_one(cc, iv, dmreq, src);
+               sg_unmap(sg, src, 0, SG_KMAP_ATOMIC);
        } else
                memset(iv, 0, cc->iv_size);
 
@@ -655,14 +658,18 @@ static int crypt_iv_lmk_post(struct crypt_config *cc, u8 
*iv,
                return 0;
 
        sg = crypt_get_sg_data(cc, dmreq->sg_out);
-       dst = kmap_atomic(sg_page(sg));
-       r = crypt_iv_lmk_one(cc, iv, dmreq, dst + sg->offset);
+       dst = sg_map(sg, 0, SG_KMAP_ATOMIC);
+       if (IS_ERR(dst))
+               return PTR_ERR(dst);
+
+       r = crypt_iv_lmk_one(cc, iv, dmreq, dst);
 
        /* Tweak the first block of plaintext sector */
        if (!r)
-               crypto_xor(dst + sg->offset, iv, cc->iv_size);
+               crypto_xor(dst, iv, cc->iv_size);
+
+       sg_unmap(sg, dst, 0, SG_KMAP_ATOMIC);
 
-       kunmap_atomic(dst);
        return r;
 }
 
@@ -786,9 +793,12 @@ static int crypt_iv_tcw_gen(struct crypt_config *cc, u8 
*iv,
        /* Remove whitening from ciphertext */
        if (bio_data_dir(dmreq->ctx->bio_in) != WRITE) {
                sg = crypt_get_sg_data(cc, dmreq->sg_in);
-               src = kmap_atomic(sg_page(sg));
-               r = crypt_iv_tcw_whitening(cc, dmreq, src + sg->offset);
-               kunmap_atomic(src);
+               src = sg_map(sg, 0, SG_KMAP_ATOMIC);
+               if (IS_ERR(src))
+                       return PTR_ERR(src);
+
+               r = crypt_iv_tcw_whitening(cc, dmreq, src);
+               sg_unmap(sg, src, 0, SG_KMAP_ATOMIC);
        }
 
        /* Calculate IV */
@@ -812,9 +822,12 @@ static int crypt_iv_tcw_post(struct crypt_config *cc, u8 
*iv,
 
        /* Apply whitening on ciphertext */
        sg = crypt_get_sg_data(cc, dmreq->sg_out);
-       dst = kmap_atomic(sg_page(sg));
-       r = crypt_iv_tcw_whitening(cc, dmreq, dst + sg->offset);
-       kunmap_atomic(dst);
+       dst = sg_map(sg, 0, SG_KMAP_ATOMIC);
+       if (IS_ERR(dst))
+               return PTR_ERR(dst);
+
+       r = crypt_iv_tcw_whitening(cc, dmreq, dst);
+       sg_unmap(sg, dst, 0, SG_KMAP_ATOMIC);
 
        return r;
 }
-- 
2.1.4

Reply via email to