Re: [PATCH 4/4] crypto: caamhash: replace kmalloc with kzalloc

From: Horia GeantÄ
Date: Mon Mar 02 2015 - 06:38:13 EST


On 2/28/2015 8:00 AM, yanjiang.jin@xxxxxxxxxxxxx wrote:
> From: Yanjiang Jin <yanjiang.jin@xxxxxxxxxxxxx>
>
> This can make sure we get a clean memory, else system would report
> the below warning:

I'd avoid using kzalloc, it's an overhead on the hot path. kmalloc can
be used with a bit of attention to detail, i.e. what params to
explicitly initialize.

I see that the stack trace reports using WR Linux and a modified caam
driver - it uses NAPI (net_rx_action) instead of tasklet.

Have you actually reproduced the problem on upstream linux?
There are some fixes that already address similar (if not exact) problem:
76b99080ccc9 "crypto: caam - fix uninitialized edesc->dst_dma fiel"
45e9af78b1ab "crypto: caam - fix uninitialized S/G table size in
ahash_digest"

Thanks,
Horia

>
> caam_jr ffe301000.jr: DMA-API: device driver tries to free DMA memory it has not allocated [device address=0xdeadbeefdeadbeef] [size=18446744073150512879 bytes]
> ------------[ cut here ]------------
> WARNING: at lib/dma-debug.c:877
> Modules linked in:
> CPU: 1 PID: 98 Comm: cryptomgr_test Not tainted 3.10.62-ltsi-WR6.0.0.0_standard #175
> task: c0000000f74bc400 ti: c0000000fffd0000 task.ti: c0000000f775c000
> NIP: c0000000004f5ed8 LR: c0000000004f5ed4 CTR: c00000000055a160
> REGS: c0000000fffd3650 TRAP: 0700 Not tainted (3.10.62-ltsi-WR6.0.0.0_standard)
> MSR: 0000000080029000 <CE,EE,ME> CR: 24a48e84 XER: 00000000
> SOFTE: 1
>
> 004f5ed4 c0000000fffd38d0 c0000000012af348 00000000000000a0
> 24a48e84 0000000000000000 c00000000125f1c8 00000000000001eb
> 00000060 0000000000000001 0000000010187373 0000000000000020
> 000001eb c000000001fff780 c0000000011ac928 c00000007f003028
> 00000097 0000000000000098 0000000000000098 c0000000f7758800
> f7098c00 0000000000000001 0000000000000001 000000000000003f
> f7098c00 0000000000000014 c00000007f003000 c0000000011b0e98
> 00000000 c000000001565b80 c0000000fffd39e0 c0000000f72f2410
> NIP [c0000000004f5ed8] .check_unmap+0x848/0x9c0
> LR [c0000000004f5ed4] .check_unmap+0x844/0x9c0
> Call Trace:
> [c0000000fffd38d0] [c0000000004f5ed4] .check_unmap+0x844/0x9c0 (unreliable)
> [c0000000fffd3970] [c0000000004f60d4] .debug_dma_unmap_page+0x84/0xb0
> [c0000000fffd3aa0] [c0000000008295cc] .ahash_done+0x1dc/0x360
> [c0000000fffd3ca0] [c00000000081b7ec] .caam_jr_dequeue+0x26c/0x3a0
> [c0000000fffd3da0] [c0000000008be50c] .net_rx_action+0x1cc/0x330
> [c0000000fffd3e80] [c00000000007276c] .__do_softirq+0x19c/0x3d0
> [c0000000fffd3f90] [c000000000017054] .call_do_softirq+0x14/0x24
> [c0000000f775ef10] [c000000000005fe8] .do_softirq+0x118/0x150
> sda: sda1 sda2 sda3
> [c0000000f775efa0] [c000000000072c54] .irq_exit+0x124/0x140
> [c0000000f775f020] [c000000000005ac4] .do_IRQ+0x184/0x370
> [c0000000f775f0d0] [c00000000001b93c] exc_0x500_common+0xfc/0x100
> --- Exception: 501 at .rcu_note_context_switch+0x0/0x370
> edule+0xbc/0x7f0
> [c0000000f775f3c0] [c000000000a29944] .__schedule+0xa4/0x7f0 (unreliable)
> [c0000000f775f620] [c000000000a277f4] .schedule_timeout+0x1b4/0x2e0
> [c0000000f775f700] [c000000000a29428] .wait_for_common+0xf8/0x1d0
> [c0000000f775f7c0] [c000000000a295ac] .wait_for_completion_interruptible+0x2c/0x50
> [c0000000f775f840] [c000000000494b64] .do_one_async_hash_op.isra.1.part.2+0x24/0x50
> [c0000000f775f8c0] [c0000000004951a8] .test_hash+0x618/0x7d0
> [c0000000f775fb30] [c000000000495424] .alg_test_hash+0xc4/0xf0
> [c0000000f775fbc0] [c000000000494928] .alg_test+0xa8/0x2c0
> [c0000000f775fcb0] [c000000000491164] .cryptomgr_test+0x64/0x80
> [c0000000f775fd30] [c00000000009a8d0] .kthread+0xf0/0x100
> [c0000000f775fe30] [c000000000000a08] .ret_from_kernel_thread+0x5c/0xd4
> Instruction dump:
> 7c641b78 419e0160 e8a90050 2fa50000 409e0008 e8a90010 e8de0028 e8fe0030
> 3c62ff90 38638320 48546b69 60000000 <0fe00000> 4bffff34 e87e0010 2fa30000
> ---[ end trace 52825d316d569f00 ]---
>
> Signed-off-by: Yanjiang Jin <yanjiang.jin@xxxxxxxxxxxxx>
> ---


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/