All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Horia Geantă" <horia.geanta@freescale.com>
To: <yanjiang.jin@windriver.com>, <herbert@gondor.apana.org.au>,
	<davem@davemloft.net>
Cc: <kim.phillips@freescale.com>, <ruchika.gupta@freescale.com>,
	<cristian.stoica@freescale.com>, <NiteshNarayanLal@freescale.com>,
	<jinyanjiang@gmail.com>, <linux-kernel@vger.kernel.org>,
	<linux-crypto@vger.kernel.org>
Subject: Re: [PATCH 2/4] crypto: caam_rng: fix rng_unmap_ctx's DMA_UNMAP size problem
Date: Mon, 2 Mar 2015 13:09:28 +0200	[thread overview]
Message-ID: <54F444E8.3030708@freescale.com> (raw)
In-Reply-To: <1425103234-31129-2-git-send-email-yanjiang.jin@windriver.com>

On 2/28/2015 8:00 AM, yanjiang.jin@windriver.com wrote:
> From: Yanjiang Jin <yanjiang.jin@windriver.com>
> 
> Fix rng_unmap_ctx's DMA_UNMAP size problem for caam_rng, else system would
> report the below calltrace during kexec boot:
> 
> caam_jr ffe301000.jr: DMA-API: device driver frees DMA memory with different size [device address=0x000000007f080010] [map size=16 bytes] [unmap size=40 bytes]
> ------------[ cut here ]------------
> WARNING: at lib/dma-debug.c:887
> Modules linked in:
> CPU: 1 PID: 730 Comm: kexec Not tainted 3.10.62-ltsi-WR6.0.0.0_standard #188
> task: c0000000f7cdaa80 ti: c0000000e5340000 task.ti: c0000000e5340000
> NIP: c0000000004f5bc8 LR: c0000000004f5bc4 CTR: c0000000005f69b0
> REGS: c0000000e53433c0 TRAP: 0700   Not tainted  (3.10.62-ltsi-WR6.0.0.0_standard)
> MSR: 0000000080029000 <CE,EE,ME>  CR: 24088482  XER: 00000000
> SOFTE: 0
> 
> GPR00: c0000000004f5bc4 c0000000e5343640 c0000000012af360 000000000000009f
> GPR04: 0000000000000000 00000000000000a0 c000000000d02070 c000000015980660
> GPR08: c000000000cff360 0000000000000000 0000000000000000 c0000000012da018
> GPR12: 00000000000001e3 c000000001fff780 00000000100f0000 0000000000000001
> GPR16: 0000000000000002 0000000000000000 0000000000000000 0000000000000000
> GPR20: 0000000000000000 0000000000000000 ffffffffffffffff 0000000000000001
> GPR24: 0000000000000001 0000000000000001 0000000000000000 0000000000000001
> GPR28: c000000001556b90 c000000001565b80 c0000000e5343750 c0000000f9427480
> NIP [c0000000004f5bc8] .check_unmap+0x538/0x9c0
> LR [c0000000004f5bc4] .check_unmap+0x534/0x9c0
> Call Trace:
> [c0000000e5343640] [c0000000004f5bc4] .check_unmap+0x534/0x9c0 (unreliable)
> [c0000000e53436e0] [c0000000004f60d4] .debug_dma_unmap_page+0x84/0xb0
> [c0000000e5343810] [c00000000082f9d4] .caam_cleanup+0x1d4/0x240
> [c0000000e53438a0] [c00000000056cc88] .hwrng_unregister+0xd8/0x1c0
> [c0000000e5343930] [c00000000082fa74] .caam_rng_shutdown+0x34/0x60
> [c0000000e53439a0] [c000000000817354] .caam_remove+0x54/0x420
> [c0000000e5343a70] [c0000000005791ac] .platform_drv_shutdown+0x3c/0x60
> [c0000000e5343af0] [c000000000573728] .device_shutdown+0x128/0x240
> [c0000000e5343b90] [c0000000000880b4] .kernel_restart_prepare+0x54/0x70
> [c0000000e5343c10] [c0000000000e5cac] .kernel_kexec+0x9c/0xd0
> [c0000000e5343c90] [c000000000088404] .SyS_reboot+0x244/0x2d0
> [c0000000e5343e30] [c000000000000718] syscall_exit+0x0/0x8c
> Instruction dump:
> 7c641b78 41de0410 e8a90050 2fa50000 419e0484 e8de0028 e8ff0030 3c62ff90
> e91e0030 38638388 48546ed9 60000000 <0fe00000> 3c62ff8f 38637fc8 48546ec5
> ---[ end trace e43fd1734d6600df ]---
> 
> Signed-off-by: Yanjiang Jin <yanjiang.jin@windriver.com>

Reviewed-by: Horia Geanta <horia.geanta@freescale.com>

> ---
>  drivers/crypto/caam/caamrng.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/crypto/caam/caamrng.c b/drivers/crypto/caam/caamrng.c
> index ae31e55..314f73d 100644
> --- a/drivers/crypto/caam/caamrng.c
> +++ b/drivers/crypto/caam/caamrng.c
> @@ -90,8 +90,8 @@ static inline void rng_unmap_ctx(struct caam_rng_ctx *ctx)
>  	struct device *jrdev = ctx->jrdev;
>  
>  	if (ctx->sh_desc_dma)
> -		dma_unmap_single(jrdev, ctx->sh_desc_dma, DESC_RNG_LEN,
> -				 DMA_TO_DEVICE);
> +		dma_unmap_single(jrdev, ctx->sh_desc_dma,
> +				desc_bytes(ctx->sh_desc), DMA_TO_DEVICE);
>  	rng_unmap_buf(jrdev, &ctx->bufs[0]);
>  	rng_unmap_buf(jrdev, &ctx->bufs[1]);
>  }
> 

  reply	other threads:[~2015-03-02 11:24 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-28  6:00 [PATCH 1/4] crypto: caam: fix some compile warnings yanjiang.jin
2015-02-28  6:00 ` [PATCH 2/4] crypto: caam_rng: fix rng_unmap_ctx's DMA_UNMAP size problem yanjiang.jin
2015-03-02 11:09   ` Horia Geantă [this message]
2015-02-28  6:00 ` [PATCH 3/4] crypto: caamhash: add two missed dma_mapping_error yanjiang.jin
2015-03-02 11:53   ` Horia Geantă
2015-03-03  6:57     ` yjin
2015-02-28  6:00 ` [PATCH 4/4] crypto: caamhash: replace kmalloc with kzalloc yanjiang.jin
2015-03-02 11:03   ` Horia Geantă
2015-03-03  6:54     ` yjin
2015-03-02 11:08 ` [PATCH 1/4] crypto: caam: fix some compile warnings Horia Geantă

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54F444E8.3030708@freescale.com \
    --to=horia.geanta@freescale.com \
    --cc=NiteshNarayanLal@freescale.com \
    --cc=cristian.stoica@freescale.com \
    --cc=davem@davemloft.net \
    --cc=herbert@gondor.apana.org.au \
    --cc=jinyanjiang@gmail.com \
    --cc=kim.phillips@freescale.com \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ruchika.gupta@freescale.com \
    --cc=yanjiang.jin@windriver.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.