Skip to content

Commit

Permalink
crypto: rsa-pkcs1pad - Remove bogus page splitting
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
herbertx committed Jul 1, 2016
1 parent c0d20d2 commit 0f2c831
Showing 1 changed file with 5 additions and 14 deletions.
19 changes: 5 additions & 14 deletions crypto/rsa-pkcs1pad.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
};

Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit 0f2c831

Please sign in to comment.