07 Sep, 2016

3 commits


31 Aug, 2016

14 commits


24 Aug, 2016

4 commits


16 Aug, 2016

8 commits


09 Aug, 2016

11 commits

  • Don't use 64 'as is', as max block size in mv_cesa_ahash_cache_req. Use
    CESA_MAX_HASH_BLOCK_SIZE instead, this is better for readability.

    Signed-off-by: Romain Perier
    Signed-off-by: Herbert Xu

    Romain Perier
     
  • Currently, in mv_cesa_{md5,sha1,sha256}_init creq->state is initialized
    before the call to mv_cesa_ahash_init. This is wrong because this
    function fills creq with zero by using memset, so its 'state' that
    contains the default DIGEST is overwritten. This commit fixes the issue
    by initializing creq->state just after the call to mv_cesa_ahash_init.

    Fixes: commit b0ef51067cb4 ("crypto: marvell/cesa - initialize hash...")
    Signed-off-by: Romain Perier
    Signed-off-by: Herbert Xu

    Romain Perier
     
  • So far, sub part of mv_cesa_int was responsible of dequeuing complete
    requests, then call the 'cleanup' operation on these reqs and call the
    crypto api callback 'complete'. The problem is that the transformation
    context 'ctx' is retrieved only once before the while loop. Which means
    that the wrong 'cleanup' operation might be called on the wrong type of
    cesa requests, it can lead to memory corruptions with this message:

    marvell-cesa f1090000.crypto: dma_pool_free cesa_padding, 5a5a5a5a/5a5a5a5a (bad dma)

    This commit fixes the issue, by updating the transformation context for
    each dequeued cesa request.

    Fixes: commit 85030c5168f1 ("crypto: marvell - Add support for chai...")
    Signed-off-by: Romain Perier
    Signed-off-by: Herbert Xu

    Romain Perier
     
  • The mv_cesa_ahash_cache_req() function always returns 0, which makes
    its return value pretty much useless. However, in addition to
    returning a useless value, it also returns a boolean in a variable
    passed by reference to indicate if the request was already cached.

    So, this commit changes mv_cesa_ahash_cache_req() to return this
    boolean. It consequently simplifies the only call site of
    mv_cesa_ahash_cache_req(), where the "ret" variable is no longer
    needed.

    Signed-off-by: Thomas Petazzoni
    Signed-off-by: Herbert Xu

    Thomas Petazzoni
     
  • The mv_cesa_ahash_init() function always returns 0, and the return
    value is anyway never checked. Turn it into a function returning void.

    Signed-off-by: Thomas Petazzoni
    Signed-off-by: Herbert Xu

    Thomas Petazzoni
     
  • The dma_iter parameter of mv_cesa_ahash_dma_add_cache() is never used,
    so get rid of it.

    Signed-off-by: Thomas Petazzoni
    Signed-off-by: Herbert Xu

    Thomas Petazzoni
     
  • The mv_cesa_dma_add_op() function builds a mv_cesa_tdma_desc structure
    to copy the operation description to the SRAM, but doesn't explicitly
    initialize the destination of the copy. It works fine because the
    operatin description must be copied at the beginning of the SRAM, and
    the mv_cesa_tdma_desc structure is initialized to zero when
    allocated. However, it is somewhat confusing to not have a destination
    defined.

    Signed-off-by: Thomas Petazzoni
    Signed-off-by: Herbert Xu

    Thomas Petazzoni
     
  • While debugging setkey issues, the following warnings were found while
    trying to reinsert the caam module. Fix this by avoiding the duplicated
    cleanup in the probe path after caam_remove(), which has already cleaned
    up the resources.

    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 2346 at /home/rmk/git/linux-rmk/mm/vmalloc.c:1490 __vunmap+0xcc/0xf4
    Trying to vfree() nonexistent vm area (f2400000)
    Modules linked in: caam(+) cbc rfcomm bnep bluetooth nfsd em28xx_rc si2157 si2168 em28xx_dvb uvcvideo snd_soc_imx_sgtl5000 em28xx snd_soc_imx_spdif tveeprom snd_soc_fsl_asoc_card snd_soc_imx_audmux snd_soc_sgtl5000 imx_sdma imx2_wdt coda v4l2_mem2mem videobuf2_dma_contig snd_soc_fsl_ssi rc_cec snd_soc_fsl_spdif imx_pcm_dma videobuf2_vmalloc videobuf2_memops imx_thermal dw_hdmi_ahb_audio dw_hdmi_cec etnaviv fuse rc_pinnacle_pctv_hd [last unloaded: caam]
    CPU: 0 PID: 2346 Comm: modprobe Tainted: G W 4.8.0-rc1+ #2014
    Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
    Backtrace:
    [] (dump_backtrace) from [] (show_stack+0x18/0x1c)
    [] (show_stack) from [] (dump_stack+0xa4/0xdc)
    [] (dump_stack) from [] (__warn+0xdc/0x108)
    [] (__warn) from [] (warn_slowpath_fmt+0x40/0x48)
    [] (warn_slowpath_fmt) from [] (__vunmap+0xcc/0xf4)
    [] (__vunmap) from [] (vunmap+0x4c/0x54)
    [] (vunmap) from [] (__iounmap+0x2c/0x30)
    [] (__iounmap) from [] (iounmap+0x1c/0x20)
    [] (iounmap) from [] (caam_probe+0x3dc/0x1498 [caam])
    [] (caam_probe [caam]) from [] (platform_drv_probe+0x58/0xb8)
    [] (platform_drv_probe) from [] (driver_probe_device+0x1fc/0x2b8)
    [] (driver_probe_device) from [] (__driver_attach+0xbc/0xc0) r10:00000000 r8:bf24b000 r7:00000000 r6:ef215844 r5:bf2490c4 r4:ef215810
    [] (__driver_attach) from [] (bus_for_each_dev+0x5c/0x90)
    [] (bus_for_each_dev) from [] (driver_attach+0x24/0x28)
    [] (driver_attach) from [] (bus_add_driver+0xf4/0x200)
    [] (bus_add_driver) from [] (driver_register+0x80/0xfc)
    [] (driver_register) from [] (__platform_driver_register+0x48/0x4c)
    [] (__platform_driver_register) from [] (caam_driver_init+0x18/0x24 [caam])
    [] (caam_driver_init [caam]) from [] (do_one_initcall+0x44/0x178)
    [] (do_one_initcall) from [] (do_init_module+0x68/0x1d8)
    [] (do_init_module) from [] (load_module+0x1974/0x20b0)
    [] (load_module) from [] (SyS_finit_module+0x94/0xa0)
    [] (SyS_finit_module) from [] (ret_fast_syscall+0x0/0x1c)
    ---[ end trace 34e3370d88bb1786 ]---
    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 2346 at /home/rmk/git/linux-rmk/drivers/clk/clk.c:594 clk_core_disable+0xe4/0x26c
    Modules linked in: caam(+) cbc rfcomm bnep bluetooth nfsd em28xx_rc si2157 si2168 em28xx_dvb uvcvideo snd_soc_imx_sgtl5000 em28xx snd_soc_imx_spdif tveeprom snd_soc_fsl_asoc_card snd_soc_imx_audmux snd_soc_sgtl5000 imx_sdma imx2_wdt coda v4l2_mem2mem videobuf2_dma_contig snd_soc_fsl_ssi rc_cec snd_soc_fsl_spdif imx_pcm_dma videobuf2_vmalloc videobuf2_memops imx_thermal dw_hdmi_ahb_audio dw_hdmi_cec etnaviv fuse rc_pinnacle_pctv_hd [last unloaded: caam]
    CPU: 0 PID: 2346 Comm: modprobe Tainted: G W 4.8.0-rc1+ #2014
    Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
    Backtrace:
    [] (dump_backtrace) from [] (show_stack+0x18/0x1c)
    [] (show_stack) from [] (dump_stack+0xa4/0xdc)
    [] (dump_stack) from [] (__warn+0xdc/0x108)
    [] (__warn) from [] (warn_slowpath_null+0x28/0x30)
    [] (warn_slowpath_null) from [] (clk_core_disable+0xe4/0x26c)
    [] (clk_core_disable) from [] (clk_core_disable_lock+0x20/0x2c)
    [] (clk_core_disable_lock) from [] (clk_disable+0x24/0x28)
    [] (clk_disable) from [] (caam_probe+0x3fc/0x1498 [caam])
    [] (caam_probe [caam]) from [] (platform_drv_probe+0x58/0xb8)
    [] (platform_drv_probe) from [] (driver_probe_device+0x1fc/0x2b8)
    [] (driver_probe_device) from [] (__driver_attach+0xbc/0xc0) r10:00000000 r8:bf24b000 r7:00000000 r6:ef215844 r5:bf2490c4 r4:ef215810
    [] (__driver_attach) from [] (bus_for_each_dev+0x5c/0x90)
    [] (bus_for_each_dev) from [] (driver_attach+0x24/0x28)
    [] (driver_attach) from [] (bus_add_driver+0xf4/0x200)
    [] (bus_add_driver) from [] (driver_register+0x80/0xfc)
    [] (driver_register) from [] (__platform_driver_register+0x48/0x4c)
    [] (__platform_driver_register) from [] (caam_driver_init+0x18/0x24 [caam])
    [] (caam_driver_init [caam]) from [] (do_one_initcall+0x44/0x178)
    [] (do_one_initcall) from [] (do_init_module+0x68/0x1d8)
    [] (do_init_module) from [] (load_module+0x1974/0x20b0)
    [] (load_module) from [] (SyS_finit_module+0x94/0xa0)
    [] (SyS_finit_module) from [] (ret_fast_syscall+0x0/0x1c)
    ---[ end trace 34e3370d88bb1787 ]---
    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 2346 at /home/rmk/git/linux-rmk/drivers/clk/clk.c:476 clk_core_unprepare+0x204/0x388
    Modules linked in: caam(+) cbc rfcomm bnep bluetooth nfsd em28xx_rc si2157 si2168 em28xx_dvb uvcvideo snd_soc_imx_sgtl5000 em28xx snd_soc_imx_spdif tveeprom snd_soc_fsl_asoc_card snd_soc_imx_audmux snd_soc_sgtl5000 imx_sdma imx2_wdt coda v4l2_mem2mem videobuf2_dma_contig snd_soc_fsl_ssi rc_cec snd_soc_fsl_spdif imx_pcm_dma videobuf2_vmalloc videobuf2_memops imx_thermal dw_hdmi_ahb_audio dw_hdmi_cec etnaviv fuse rc_pinnacle_pctv_hd [last unloaded: caam]
    CPU: 0 PID: 2346 Comm: modprobe Tainted: G W 4.8.0-rc1+ #2014
    Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
    Backtrace:
    [] (dump_backtrace) from [] (show_stack+0x18/0x1c)
    [] (show_stack) from [] (dump_stack+0xa4/0xdc)
    [] (dump_stack) from [] (__warn+0xdc/0x108)
    [] (__warn) from [] (warn_slowpath_null+0x28/0x30)
    [] (warn_slowpath_null) from [] (clk_core_unprepare+0x204/0x388)
    [] (clk_core_unprepare) from [] (clk_unprepare+0x2c/0x34)
    [] (clk_unprepare) from [] (caam_probe+0x404/0x1498 [caam])
    [] (caam_probe [caam]) from [] (platform_drv_probe+0x58/0xb8)
    [] (platform_drv_probe) from [] (driver_probe_device+0x1fc/0x2b8)
    [] (driver_probe_device) from [] (__driver_attach+0xbc/0xc0) r10:00000000 r8:bf24b000 r7:00000000 r6:ef215844 r5:bf2490c4 r4:ef215810
    [] (__driver_attach) from [] (bus_for_each_dev+0x5c/0x90)
    [] (bus_for_each_dev) from [] (driver_attach+0x24/0x28)
    [] (driver_attach) from [] (bus_add_driver+0xf4/0x200)
    [] (bus_add_driver) from [] (driver_register+0x80/0xfc)
    [] (driver_register) from [] (__platform_driver_register+0x48/0x4c)
    [] (__platform_driver_register) from [] (caam_driver_init+0x18/0x24 [caam])
    [] (caam_driver_init [caam]) from [] (do_one_initcall+0x44/0x178)
    [] (do_one_initcall) from [] (do_init_module+0x68/0x1d8)
    [] (do_init_module) from [] (load_module+0x1974/0x20b0)
    [] (load_module) from [] (SyS_finit_module+0x94/0xa0)
    [] (SyS_finit_module) from [] (ret_fast_syscall+0x0/0x1c)
    ---[ end trace 34e3370d88bb1788 ]---

    Signed-off-by: Russell King
    Signed-off-by: Herbert Xu

    Russell King
     
  • Threaded interrupts can perform the function of the tasklet, and much
    more safely too - without races when trying to take the tasklet and
    interrupt down on device removal.

    With the old code, there is a window where we call tasklet_kill(). If
    the interrupt handler happens to be running on a different CPU, and
    subsequently calls tasklet_schedule(), the tasklet will be re-scheduled
    for execution.

    Switching to a hardirq/threadirq combination implementation avoids this,
    and it also means generic code deals with the teardown sequencing of the
    threaded and non-threaded parts.

    Signed-off-by: Russell King
    Signed-off-by: Herbert Xu

    Russell King
     
  • Add a helper to map the source scatterlist into the descriptor.

    Signed-off-by: Russell King
    Signed-off-by: Herbert Xu

    Russell King
     
  • Signed-off-by: Russell King
    Signed-off-by: Herbert Xu

    Russell King