crypto: rsa-pkcs1pad - Remove bogus page splitting
authorHerbert Xu <herbert@gondor.apana.org.au>
Wed, 29 Jun 2016 11:32:24 +0000 (19:32 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 1 Jul 2016 15:45:19 +0000 (23:45 +0800)
The helper pkcs1pad_sg_set_buf tries to split a buffer that crosses
a page boundary into two SG entries.  This is unnecessary.  This
patch removes that.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/rsa-pkcs1pad.c

index 5c1c78e..d9baefb 100644 (file)
@@ -103,7 +103,7 @@ struct pkcs1pad_inst_ctx {
 struct pkcs1pad_request {
        struct akcipher_request child_req;
 
-       struct scatterlist in_sg[3], out_sg[2];
+       struct scatterlist in_sg[2], out_sg[1];
        uint8_t *in_buf, *out_buf;
 };
 
@@ -163,19 +163,10 @@ static int pkcs1pad_get_max_size(struct crypto_akcipher *tfm)
 static void pkcs1pad_sg_set_buf(struct scatterlist *sg, void *buf, size_t len,
                struct scatterlist *next)
 {
-       int nsegs = next ? 1 : 0;
-
-       if (offset_in_page(buf) + len <= PAGE_SIZE) {
-               nsegs += 1;
-               sg_init_table(sg, nsegs);
-               sg_set_buf(sg, buf, len);
-       } else {
-               nsegs += 2;
-               sg_init_table(sg, nsegs);
-               sg_set_buf(sg + 0, buf, PAGE_SIZE - offset_in_page(buf));
-               sg_set_buf(sg + 1, buf + PAGE_SIZE - offset_in_page(buf),
-                               offset_in_page(buf) + len - PAGE_SIZE);
-       }
+       int nsegs = next ? 2 : 1;
+
+       sg_init_table(sg, nsegs);
+       sg_set_buf(sg, buf, len);
 
        if (next)
                sg_chain(sg, nsegs, next);