projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
c56c2e1
)
crypto: talitos - fix ablkcipher for CONFIG_VMAP_STACK
author
Christophe Leroy
<christophe.leroy@c-s.fr>
Tue, 8 Jan 2019 06:56:48 +0000
(06:56 +0000)
committer
Herbert Xu
<herbert@gondor.apana.org.au>
Thu, 10 Jan 2019 13:37:32 +0000
(21:37 +0800)
[ 2.364486] WARNING: CPU: 0 PID: 60 at ./arch/powerpc/include/asm/io.h:837 dma_nommu_map_page+0x44/0xd4
[ 2.373579] CPU: 0 PID: 60 Comm: cryptomgr_test Tainted: G W
4.20.0-rc5-00560-g6bfb52e23a00
-dirty #531
[ 2.384740] NIP:
c000c540
LR:
c000c584
CTR:
00000000
[ 2.389743] REGS:
c95abab0
TRAP: 0700 Tainted: G W (
4.20.0-rc5-00560-g6bfb52e23a00
-dirty)
[ 2.400042] MSR:
00029032
<EE,ME,IR,DR,RI> CR:
24042204
XER:
00000000
[ 2.406669]
[ 2.406669] GPR00:
c02f2244
c95abb60
c6262990
c95abd80
0000256a
00000001
00000001
00000001
[ 2.406669] GPR08:
00000000
00002000
00000010
00000010
24042202
00000000
00000100
c95abd88
[ 2.406669] GPR16:
00000000
c05569d4
00000001
00000010
c95abc88
c0615664
00000004
00000000
[ 2.406669] GPR24:
00000010
c95abc88
c95abc88
00000000
c61ae210
c7ff6d40
c61ae210
00003d68
[ 2.441559] NIP [
c000c540
] dma_nommu_map_page+0x44/0xd4
[ 2.446720] LR [
c000c584
] dma_nommu_map_page+0x88/0xd4
[ 2.451762] Call Trace:
[ 2.454195] [
c95abb60
] [
82000808
] 0x82000808 (unreliable)
[ 2.459572] [
c95abb80
] [
c02f2244
] talitos_edesc_alloc+0xbc/0x3c8
[ 2.465493] [
c95abbb0
] [
c02f2600
] ablkcipher_edesc_alloc+0x4c/0x5c
[ 2.471606] [
c95abbd0
] [
c02f4ed0
] ablkcipher_encrypt+0x20/0x64
[ 2.477389] [
c95abbe0
] [
c02023b0
] __test_skcipher+0x4bc/0xa08
[ 2.483049] [
c95abe00
] [
c0204b60
] test_skcipher+0x2c/0xcc
[ 2.488385] [
c95abe20
] [
c0204c48
] alg_test_skcipher+0x48/0xbc
[ 2.494064] [
c95abe40
] [
c0205cec
] alg_test+0x164/0x2e8
[ 2.499142] [
c95abf00
] [
c0200dec
] cryptomgr_test+0x48/0x50
[ 2.504558] [
c95abf10
] [
c0039ff4
] kthread+0xe4/0x110
[ 2.509471] [
c95abf40
] [
c000e1d0
] ret_from_kernel_thread+0x14/0x1c
[ 2.515532] Instruction dump:
[ 2.518468]
7c7e1b78
7c9d2378
7cbf2b78
41820054
3d20c076
8089c200
3d20c076
7c84e850
[ 2.526127]
8129c204
7c842e70
7f844840
419c0008
<
0fe00000
>
2f9e0000
54847022
7c84fa14
[ 2.533960] ---[ end trace
bf78d94af73fe3b8
]---
[ 2.539123] talitos
ff020000
.crypto: master data transfer error
[ 2.544775] talitos
ff020000
.crypto: TEA error: ISR 0x20000000_00000040
[ 2.551625] alg: skcipher: encryption failed on test 1 for ecb-aes-talitos: ret=22
IV cannot be on stack when CONFIG_VMAP_STACK is selected because the stack
cannot be DMA mapped anymore.
This patch copies the IV into the extended descriptor.
Fixes: 4de9d0b547b9 ("crypto: talitos - Add ablkcipher algorithms")
Cc: stable@vger.kernel.org
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Reviewed-by: Horia Geantă <horia.geanta@nxp.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/talitos.c
patch
|
blob
|
history
diff --git
a/drivers/crypto/talitos.c
b/drivers/crypto/talitos.c
index 54d80e7edb86bff0a98f857f787f29ae09d1b6f9..f8e2c5c3f4eb1241d3b4993dfe2e29e57a8d90d8 100644
(file)
--- a/
drivers/crypto/talitos.c
+++ b/
drivers/crypto/talitos.c
@@
-1416,12
+1416,15
@@
static struct talitos_edesc *talitos_edesc_alloc(struct device *dev,
/* if its a ahash, add space for a second desc next to the first one */
if (is_sec1 && !dst)
alloc_len += sizeof(struct talitos_desc);
+ alloc_len += ivsize;
edesc = kmalloc(alloc_len, GFP_DMA | flags);
if (!edesc)
return ERR_PTR(-ENOMEM);
- if (ivsize)
+ if (ivsize) {
+ iv = memcpy(((u8 *)edesc) + alloc_len - ivsize, iv, ivsize);
iv_dma = dma_map_single(dev, iv, ivsize, DMA_TO_DEVICE);
+ }
memset(&edesc->desc, 0, sizeof(edesc->desc));
edesc->src_nents = src_nents;