31 Aug, 2016

12 commits


24 Aug, 2016

9 commits

  • If devm_add_action() fails we are explicitly calling the cleanup to free
    the resources allocated. Lets use the helper devm_add_action_or_reset()
    and return directly in case of error, as we know that the cleanup function
    has been already called by the helper if there was any error.

    Signed-off-by: Sudip Mukherjee
    Reviewed-by: Heiko Stuebner
    Signed-off-by: Herbert Xu

    Sudip Mukherjee
     
  • With a public notification, NIST now allows the use of RSA keys with a
    modulus >= 2048 bits. The new rule allows any modulus size >= 2048 bits
    provided that either 2048 or 3072 bits are supported at least so that
    the entire RSA implementation can be CAVS tested.

    This patch fixes the inability to boot the kernel in FIPS mode, because
    certs/x509.genkey defines a 4096 bit RSA key per default. This key causes
    the RSA signature verification to fail in FIPS mode without the patch
    below.

    Signed-off-by: Stephan Mueller
    Signed-off-by: Herbert Xu

    Stephan Mueller
     
  • clk_prepare_enable() may fail, so we should better check its return
    value and propagate it in the case of failure.

    Signed-off-by: Fabio Estevam
    Signed-off-by: Herbert Xu

    Fabio Estevam
     
  • Remove omap3_rom_rng_data_present method as it was returning 1 always.
    Use .read callback instead of .data_read callback. This avoids use of
    obsolete callbacks.

    This patch is not tested with hardware as I don't have access to it.

    Signed-off-by: PrasannaKumar Muralidharan
    Signed-off-by: Herbert Xu

    PrasannaKumar Muralidharan
     
  • Fix to return a negative error code from the error handling
    case instead of 0.

    Signed-off-by: Wei Yongjun
    Acked-by: Stephan Mueller
    Signed-off-by: Herbert Xu

    Wei Yongjun
     
  • Add the missing unlock before return from function sun4i_hash()
    in the error handling case.

    Fixes: 477d9b2e591b ("crypto: sun4i-ss - unify update/final function")
    Signed-off-by: Wei Yongjun
    Acked-by: Corentin LABBE
    Signed-off-by: Herbert Xu

    Wei Yongjun
     
  • If the architecture selected the xor function with XOR_SELECT_TEMPLATE
    the speed result of the do_xor_speed benchmark is of limited value.
    The speed measurement increases the bootup time a little, which can
    makes a difference for kernels used in container like virtual machines.

    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Herbert Xu

    Martin Schwidefsky
     
  • Currently, very few RNG drivers support single byte reads using the
    ->read() interface. Of the 14 drivers in drivers/char/hw_random that
    support this interface only three of these actually support max == 1.
    The other behaviours vary between return 0, return 2, return 4 and return
    -EIO).

    This is not a problem in practice because the core hw_random code never
    performs a read shorter than 16 bytes. The documentation for this function
    already contrains the alignment of the buffer pointer, so let's also
    guarantee that the buffer is at least as large as its alignment.

    This constraint is intended to be the weakest guarantee neccessary to
    allow driver writers to safely simplify their code.

    Signed-off-by: Daniel Thompson
    Signed-off-by: Herbert Xu

    Daniel Thompson
     
  • Update the documentation for crypto_register_algs() and
    crypto_unregister_algs() to match the actual behavior.

    Signed-off-by: Eric Biggers
    Signed-off-by: Herbert Xu

    Eric Biggers
     

16 Aug, 2016

10 commits


09 Aug, 2016

9 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