crypto: arm64-aes - fix encryption of unaligned data
authorMikulas Patocka <mpatocka@redhat.com>
Fri, 25 Jul 2014 23:40:20 +0000 (19:40 -0400)
committerJP Abgrall <jpa@google.com>
Thu, 28 Aug 2014 17:22:25 +0000 (10:22 -0700)
commitbe64e76c02d51b5323f228da3575b92ae03e25ce
tree5ddc3dada4793f8ca2d7568110f52f94b4ecef2f
parent181dbc7cc2ba7135f08aa8647b7817cc37b8ffa7
crypto: arm64-aes - fix encryption of unaligned data

cryptsetup fails on arm64 when using kernel encryption via AF_ALG socket.
See https://bugzilla.redhat.com/show_bug.cgi?id=1122937

The bug is caused by incorrect handling of unaligned data in
arch/arm64/crypto/aes-glue.c. Cryptsetup creates a buffer that is aligned
on 8 bytes, but not on 16 bytes. It opens AF_ALG socket and uses the
socket to encrypt data in the buffer. The arm64 crypto accelerator causes
data corruption or crashes in the scatterwalk_pagedone.

This patch fixes the bug by passing the residue bytes that were not
processed as the last parameter to blkcipher_walk_done.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/arm64/crypto/aes-glue.c