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:
e11aa9f
)
crypto: caam - fix DMA direction mismatch in ahash_done_ctx_dst
author
Horia Geanta
<horia.geanta@freescale.com>
Fri, 11 Jul 2014 12:34:51 +0000
(15:34 +0300)
committer
Herbert Xu
<herbert@gondor.apana.org.au>
Wed, 23 Jul 2014 13:31:35 +0000
(21:31 +0800)
caam_jr
ffe301000
.jr: DMA-API: device driver frees DMA memory with different direction [device address=0x00000000062ad1ac] [size=28 bytes] [mapped with DMA_FROM_DEVICE] [unmapped with DMA_TO_DEVICE]
------------[ cut here ]------------
WARNING: at lib/dma-debug.c:1131
Modules linked in: caamhash(+) [last unloaded: caamhash]
CPU: 0 PID: 0 Comm: swapper/0 Tainted: G W 3.16.0-rc1 #23
task:
c0789380
ti:
effd2000
task.ti:
c07d6000
NIP:
c02885cc
LR:
c02885cc
CTR:
c02d7020
REGS:
effd3d50
TRAP: 0700 Tainted: G W (3.16.0-rc1)
MSR:
00021002
<CE,ME> CR:
44048082
XER:
00000000
GPR00:
c02885cc
effd3e00
c0789380
000000c6
c1de3478
c1de382c
00000000
00021002
GPR08:
00000007
00000000
01660000
0000012f
84048082
00000000
00000018
c07db080
GPR16:
00000006
00000100
0000002c
eee567e0
c07e1e10
c0da1180
00029002
c0d96708
GPR24:
c07a0000
c07a4acc
effd3e58
ee29b140
0000001c
ee130210
00000000
c0d96700
NIP [
c02885cc
] check_unmap+0x47c/0xab0
LR [
c02885cc
] check_unmap+0x47c/0xab0
Call Trace:
[
effd3e00
] [
c02885cc
] check_unmap+0x47c/0xab0 (unreliable)
[
effd3e50
] [
c0288c78
] debug_dma_unmap_page+0x78/0x90
[
effd3ed0
] [
f9350974
] ahash_done_ctx_dst+0xa4/0x200 [caamhash]
[
effd3f00
] [
c0429640
] caam_jr_dequeue+0x1c0/0x280
[
effd3f50
] [
c002c94c
] tasklet_action+0xcc/0x1a0
[
effd3f80
] [
c002cb30
] __do_softirq+0x110/0x220
[
effd3fe0
] [
c002cf34
] irq_exit+0xa4/0xe0
[
effd3ff0
] [
c000d834
] call_do_irq+0x24/0x3c
[
c07d7d50
] [
c000489c
] do_IRQ+0x8c/0x110
[
c07d7d70
] [
c000f86c
] ret_from_except+0x0/0x18
--- Exception: 501 at _raw_spin_unlock_irq+0x30/0x50
LR = _raw_spin_unlock_irq+0x2c/0x50
[
c07d7e40
] [
c0053084
] finish_task_switch+0x74/0x130
[
c07d7e60
] [
c058f278
] __schedule+0x238/0x620
[
c07d7f70
] [
c058fb50
] schedule_preempt_disabled+0x10/0x20
[
c07d7f80
] [
c00686a0
] cpu_startup_entry+0x100/0x1b0
[
c07d7fb0
] [
c074793c
] start_kernel+0x338/0x34c
[
c07d7ff0
] [
c00003d8
] set_ivor+0x140/0x17c
Instruction dump:
7d495214
7d294214
806a0010
80c90010
811a001c
813a0020
815a0024
90610008
3c60c06d
90c1000c
3863f764
4830d131
<
0fe00000
>
3c60c06d
3863f0f4
4830d121
---[ end trace
db1fae088c75c270
]---
Mapped at:
[<
f9352454
>] ahash_update_first+0x5b4/0xba0 [caamhash]
[<
c022ff28
>] __test_hash+0x288/0x6c0
[<
c0230388
>] test_hash+0x28/0xb0
[<
c02304a4
>] alg_test_hash+0x94/0xc0
[<
c022fa94
>] alg_test+0x114/0x2e0
Signed-off-by: Horia Geanta <horia.geanta@freescale.com>
Acked-by: Kim Phillips <kim.phillips@freescale.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/caam/caamhash.c
patch
|
blob
|
history
diff --git
a/drivers/crypto/caam/caamhash.c
b/drivers/crypto/caam/caamhash.c
index 9ee4e0478220fdbd8cee9d001442257478fcb36e..4bb6ff46e339719b738b9e93d36da0216876f801 100644
(file)
--- a/
drivers/crypto/caam/caamhash.c
+++ b/
drivers/crypto/caam/caamhash.c
@@
-753,7
+753,7
@@
static void ahash_done_ctx_dst(struct device *jrdev, u32 *desc, u32 err,
if (err)
caam_jr_strstatus(jrdev, err);
- ahash_unmap_ctx(jrdev, edesc, req, ctx->ctx_len, DMA_
TO
_DEVICE);
+ ahash_unmap_ctx(jrdev, edesc, req, ctx->ctx_len, DMA_
FROM
_DEVICE);
kfree(edesc);
#ifdef DEBUG