Skip to content

Commit

Permalink
crypto: sun4i-ss: handle BigEndian for cipher
Browse files Browse the repository at this point in the history
Ciphers produce invalid results on BE.
Key and IV need to be written in LE.

Fixes: 6298e94 ("crypto: sunxi-ss - Add Allwinner Security System crypto accelerator")
Cc: <stable@vger.kernel.org>
Signed-off-by: Corentin Labbe <clabbe@baylibre.com>
  • Loading branch information
montjoie authored and intel-lab-lkp committed Sep 20, 2020
1 parent a28c40d commit e7d9839
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions drivers/crypto/allwinner/sun4i-ss/sun4i-ss-cipher.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,13 @@ static int noinline_for_stack sun4i_ss_opti_poll(struct skcipher_request *areq)

spin_lock_irqsave(&ss->slock, flags);

for (i = 0; i < op->keylen; i += 4)
writel(*(op->key + i / 4), ss->base + SS_KEY0 + i);
for (i = 0; i < op->keylen / 4; i++)
writel(cpu_to_le32(op->key[i]), ss->base + SS_KEY0 + i * 4);

if (areq->iv) {
for (i = 0; i < 4 && i < ivsize / 4; i++) {
v = *(u32 *)(areq->iv + i * 4);
writel(v, ss->base + SS_IV0 + i * 4);
writel(cpu_to_le32(v), ss->base + SS_IV0 + i * 4);
}
}
writel(mode, ss->base + SS_CTL);
Expand Down Expand Up @@ -225,13 +225,13 @@ static int sun4i_ss_cipher_poll(struct skcipher_request *areq)

spin_lock_irqsave(&ss->slock, flags);

for (i = 0; i < op->keylen; i += 4)
writel(*(op->key + i / 4), ss->base + SS_KEY0 + i);
for (i = 0; i < op->keylen / 4; i++)
writel(cpu_to_le32(op->key[i]), ss->base + SS_KEY0 + i * 4);

if (areq->iv) {
for (i = 0; i < 4 && i < ivsize / 4; i++) {
v = *(u32 *)(areq->iv + i * 4);
writel(v, ss->base + SS_IV0 + i * 4);
writel(cpu_to_le32(v), ss->base + SS_IV0 + i * 4);
}
}
writel(mode, ss->base + SS_CTL);
Expand Down

0 comments on commit e7d9839

Please sign in to comment.