summaryrefslogtreecommitdiffstats
path: root/net/ceph/crypto.c
diff options
context:
space:
mode:
authorIlya Dryomov2017-01-16 19:16:46 +0100
committerIlya Dryomov2017-01-18 17:58:45 +0100
commit124f930b8cbc4ac11236e6eb1c5f008318864588 (patch)
treeb4278bec0fd61b98b913fefdc7890bedaf1099b6 /net/ceph/crypto.c
parentceph: fix ceph_get_caps() interruption (diff)
downloadkernel-qcow2-linux-124f930b8cbc4ac11236e6eb1c5f008318864588.tar.gz
kernel-qcow2-linux-124f930b8cbc4ac11236e6eb1c5f008318864588.tar.xz
kernel-qcow2-linux-124f930b8cbc4ac11236e6eb1c5f008318864588.zip
libceph: make sure ceph_aes_crypt() IV is aligned
... otherwise the crypto stack will align it for us with a GFP_ATOMIC allocation and a memcpy() -- see skcipher_walk_first(). Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'net/ceph/crypto.c')
-rw-r--r--net/ceph/crypto.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ceph/crypto.c b/net/ceph/crypto.c
index 3949ce70be07..292e33bd916e 100644
--- a/net/ceph/crypto.c
+++ b/net/ceph/crypto.c
@@ -214,7 +214,7 @@ static int ceph_aes_crypt(const struct ceph_crypto_key *key, bool encrypt,
SKCIPHER_REQUEST_ON_STACK(req, key->tfm);
struct sg_table sgt;
struct scatterlist prealloc_sg;
- char iv[AES_BLOCK_SIZE];
+ char iv[AES_BLOCK_SIZE] __aligned(8);
int pad_byte = AES_BLOCK_SIZE - (in_len & (AES_BLOCK_SIZE - 1));
int crypt_len = encrypt ? in_len + pad_byte : in_len;
int ret;