18 Apr, 2019

1 commit


25 Jan, 2019

1 commit

  • CRYPTO_TFM_REQ_WEAK_KEY confuses newcomers to the crypto API because it
    sounds like it is requesting a weak key. Actually, it is requesting
    that weak keys be forbidden (for algorithms that have the notion of
    "weak keys"; currently only DES and XTS do).

    Also it is only one letter away from CRYPTO_TFM_RES_WEAK_KEY, with which
    it can be easily confused. (This in fact happened in the UX500 driver,
    though just in some debugging messages.)

    Therefore, make the intent clear by renaming it to
    CRYPTO_TFM_REQ_FORBID_WEAK_KEYS.

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

    Eric Biggers
     

10 Jan, 2019

2 commits

  • [ 2.364486] WARNING: CPU: 0 PID: 60 at ./arch/powerpc/include/asm/io.h:837 dma_nommu_map_page+0x44/0xd4
    [ 2.373579] CPU: 0 PID: 60 Comm: cryptomgr_test Tainted: G W 4.20.0-rc5-00560-g6bfb52e23a00-dirty #531
    [ 2.384740] NIP: c000c540 LR: c000c584 CTR: 00000000
    [ 2.389743] REGS: c95abab0 TRAP: 0700 Tainted: G W (4.20.0-rc5-00560-g6bfb52e23a00-dirty)
    [ 2.400042] MSR: 00029032 CR: 24042204 XER: 00000000
    [ 2.406669]
    [ 2.406669] GPR00: c02f2244 c95abb60 c6262990 c95abd80 0000256a 00000001 00000001 00000001
    [ 2.406669] GPR08: 00000000 00002000 00000010 00000010 24042202 00000000 00000100 c95abd88
    [ 2.406669] GPR16: 00000000 c05569d4 00000001 00000010 c95abc88 c0615664 00000004 00000000
    [ 2.406669] GPR24: 00000010 c95abc88 c95abc88 00000000 c61ae210 c7ff6d40 c61ae210 00003d68
    [ 2.441559] NIP [c000c540] dma_nommu_map_page+0x44/0xd4
    [ 2.446720] LR [c000c584] dma_nommu_map_page+0x88/0xd4
    [ 2.451762] Call Trace:
    [ 2.454195] [c95abb60] [82000808] 0x82000808 (unreliable)
    [ 2.459572] [c95abb80] [c02f2244] talitos_edesc_alloc+0xbc/0x3c8
    [ 2.465493] [c95abbb0] [c02f2600] ablkcipher_edesc_alloc+0x4c/0x5c
    [ 2.471606] [c95abbd0] [c02f4ed0] ablkcipher_encrypt+0x20/0x64
    [ 2.477389] [c95abbe0] [c02023b0] __test_skcipher+0x4bc/0xa08
    [ 2.483049] [c95abe00] [c0204b60] test_skcipher+0x2c/0xcc
    [ 2.488385] [c95abe20] [c0204c48] alg_test_skcipher+0x48/0xbc
    [ 2.494064] [c95abe40] [c0205cec] alg_test+0x164/0x2e8
    [ 2.499142] [c95abf00] [c0200dec] cryptomgr_test+0x48/0x50
    [ 2.504558] [c95abf10] [c0039ff4] kthread+0xe4/0x110
    [ 2.509471] [c95abf40] [c000e1d0] ret_from_kernel_thread+0x14/0x1c
    [ 2.515532] Instruction dump:
    [ 2.518468] 7c7e1b78 7c9d2378 7cbf2b78 41820054 3d20c076 8089c200 3d20c076 7c84e850
    [ 2.526127] 8129c204 7c842e70 7f844840 419c0008 2f9e0000 54847022 7c84fa14
    [ 2.533960] ---[ end trace bf78d94af73fe3b8 ]---
    [ 2.539123] talitos ff020000.crypto: master data transfer error
    [ 2.544775] talitos ff020000.crypto: TEA error: ISR 0x20000000_00000040
    [ 2.551625] alg: skcipher: encryption failed on test 1 for ecb-aes-talitos: ret=22

    IV cannot be on stack when CONFIG_VMAP_STACK is selected because the stack
    cannot be DMA mapped anymore.

    This patch copies the IV into the extended descriptor.

    Fixes: 4de9d0b547b9 ("crypto: talitos - Add ablkcipher algorithms")
    Cc: stable@vger.kernel.org
    Signed-off-by: Christophe Leroy
    Reviewed-by: Horia Geantă
    Signed-off-by: Herbert Xu

    Christophe Leroy
     
  • This patch moves the mapping of IV after the kmalloc(). This
    avoids having to unmap in case kmalloc() fails.

    Signed-off-by: Christophe Leroy
    Reviewed-by: Horia Geantă
    Cc: stable@vger.kernel.org
    Signed-off-by: Herbert Xu

    Christophe Leroy
     

23 Dec, 2018

1 commit

  • Remove dead code related to internal IV generators, which are no longer
    used since they've been replaced with the "seqiv" and "echainiv"
    templates. The removed code includes:

    - The "givcipher" (GIVCIPHER) algorithm type. No algorithms are
    registered with this type anymore, so it's unneeded.

    - The "const char *geniv" member of aead_alg, ablkcipher_alg, and
    blkcipher_alg. A few algorithms still set this, but it isn't used
    anymore except to show via /proc/crypto and CRYPTO_MSG_GETALG.
    Just hardcode "" or "" in those cases.

    - The 'skcipher_givcrypt_request' structure, which is never used.

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

    Eric Biggers
     

09 Jul, 2018

2 commits

  • Some ahash algorithms set .cra_type = &crypto_ahash_type. But this is
    redundant with the C structure type ('struct ahash_alg'), and
    crypto_register_ahash() already sets the .cra_type automatically.
    Apparently the useless assignment has just been copy+pasted around.

    So, remove the useless assignment from all the ahash algorithms.

    This patch shouldn't change any actual behavior.

    Signed-off-by: Eric Biggers
    Acked-by: Gilad Ben-Yossef
    Signed-off-by: Herbert Xu

    Eric Biggers
     
  • Many ahash algorithms set .cra_flags = CRYPTO_ALG_TYPE_AHASH. But this
    is redundant with the C structure type ('struct ahash_alg'), and
    crypto_register_ahash() already sets the type flag automatically,
    clearing any type flag that was already there. Apparently the useless
    assignment has just been copy+pasted around.

    So, remove the useless assignment from all the ahash algorithms.

    This patch shouldn't change any actual behavior.

    Signed-off-by: Eric Biggers
    Acked-by: Gilad Ben-Yossef
    Signed-off-by: Herbert Xu

    Eric Biggers
     

13 Jun, 2018

1 commit

  • The devm_kzalloc() function has a 2-factor argument form, devm_kcalloc().
    This patch replaces cases of:

    devm_kzalloc(handle, a * b, gfp)

    with:
    devm_kcalloc(handle, a * b, gfp)

    as well as handling cases of:

    devm_kzalloc(handle, a * b * c, gfp)

    with:

    devm_kzalloc(handle, array3_size(a, b, c), gfp)

    as it's slightly less ugly than:

    devm_kcalloc(handle, array_size(a, b), c, gfp)

    This does, however, attempt to ignore constant size factors like:

    devm_kzalloc(handle, 4 * 1024, gfp)

    though any constants defined via macros get caught up in the conversion.

    Any factors with a sizeof() of "unsigned char", "char", and "u8" were
    dropped, since they're redundant.

    Some manual whitespace fixes were needed in this patch, as Coccinelle
    really liked to write "=devm_kcalloc..." instead of "= devm_kcalloc...".

    The Coccinelle script used for this was:

    // Fix redundant parens around sizeof().
    @@
    expression HANDLE;
    type TYPE;
    expression THING, E;
    @@

    (
    devm_kzalloc(HANDLE,
    - (sizeof(TYPE)) * E
    + sizeof(TYPE) * E
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (sizeof(THING)) * E
    + sizeof(THING) * E
    , ...)
    )

    // Drop single-byte sizes and redundant parens.
    @@
    expression HANDLE;
    expression COUNT;
    typedef u8;
    typedef __u8;
    @@

    (
    devm_kzalloc(HANDLE,
    - sizeof(u8) * (COUNT)
    + COUNT
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(__u8) * (COUNT)
    + COUNT
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(char) * (COUNT)
    + COUNT
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(unsigned char) * (COUNT)
    + COUNT
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(u8) * COUNT
    + COUNT
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(__u8) * COUNT
    + COUNT
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(char) * COUNT
    + COUNT
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(unsigned char) * COUNT
    + COUNT
    , ...)
    )

    // 2-factor product with sizeof(type/expression) and identifier or constant.
    @@
    expression HANDLE;
    type TYPE;
    expression THING;
    identifier COUNT_ID;
    constant COUNT_CONST;
    @@

    (
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * (COUNT_ID)
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * COUNT_ID
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * (COUNT_CONST)
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * COUNT_CONST
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * (COUNT_ID)
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * COUNT_ID
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * (COUNT_CONST)
    + COUNT_CONST, sizeof(THING)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * COUNT_CONST
    + COUNT_CONST, sizeof(THING)
    , ...)
    )

    // 2-factor product, only identifiers.
    @@
    expression HANDLE;
    identifier SIZE, COUNT;
    @@

    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - SIZE * COUNT
    + COUNT, SIZE
    , ...)

    // 3-factor product with 1 sizeof(type) or sizeof(expression), with
    // redundant parens removed.
    @@
    expression HANDLE;
    expression THING;
    identifier STRIDE, COUNT;
    type TYPE;
    @@

    (
    devm_kzalloc(HANDLE,
    - sizeof(TYPE) * (COUNT) * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(TYPE) * (COUNT) * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(TYPE) * COUNT * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(TYPE) * COUNT * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(THING) * (COUNT) * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(THING) * (COUNT) * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(THING) * COUNT * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(THING) * COUNT * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    )

    // 3-factor product with 2 sizeof(variable), with redundant parens removed.
    @@
    expression HANDLE;
    expression THING1, THING2;
    identifier COUNT;
    type TYPE1, TYPE2;
    @@

    (
    devm_kzalloc(HANDLE,
    - sizeof(TYPE1) * sizeof(TYPE2) * COUNT
    + array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(TYPE1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(THING1) * sizeof(THING2) * COUNT
    + array3_size(COUNT, sizeof(THING1), sizeof(THING2))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(THING1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(THING1), sizeof(THING2))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(TYPE1) * sizeof(THING2) * COUNT
    + array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(TYPE1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
    , ...)
    )

    // 3-factor product, only identifiers, with redundant parens removed.
    @@
    expression HANDLE;
    identifier STRIDE, SIZE, COUNT;
    @@

    (
    devm_kzalloc(HANDLE,
    - (COUNT) * STRIDE * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - COUNT * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - COUNT * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (COUNT) * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - COUNT * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (COUNT) * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (COUNT) * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - COUNT * STRIDE * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    )

    // Any remaining multi-factor products, first at least 3-factor products,
    // when they're not all constants...
    @@
    expression HANDLE;
    expression E1, E2, E3;
    constant C1, C2, C3;
    @@

    (
    devm_kzalloc(HANDLE, C1 * C2 * C3, ...)
    |
    devm_kzalloc(HANDLE,
    - (E1) * E2 * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (E1) * (E2) * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (E1) * (E2) * (E3)
    + array3_size(E1, E2, E3)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - E1 * E2 * E3
    + array3_size(E1, E2, E3)
    , ...)
    )

    // And then all remaining 2 factors products when they're not all constants,
    // keeping sizeof() as the second factor argument.
    @@
    expression HANDLE;
    expression THING, E1, E2;
    type TYPE;
    constant C1, C2, C3;
    @@

    (
    devm_kzalloc(HANDLE, sizeof(THING) * C2, ...)
    |
    devm_kzalloc(HANDLE, sizeof(TYPE) * C2, ...)
    |
    devm_kzalloc(HANDLE, C1 * C2 * C3, ...)
    |
    devm_kzalloc(HANDLE, C1 * C2, ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * (E2)
    + E2, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * E2
    + E2, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * (E2)
    + E2, sizeof(THING)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * E2
    + E2, sizeof(THING)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - (E1) * E2
    + E1, E2
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - (E1) * (E2)
    + E1, E2
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - E1 * E2
    + E1, E2
    , ...)
    )

    Signed-off-by: Kees Cook

    Kees Cook
     

31 Mar, 2018

2 commits

  • In talitos's aead_setkey we save pointers to the authenc keys in a
    local variable of type struct crypto_authenc_keys and we don't
    zeroize it after use. Fix this and don't leak pointers to the
    authenc keys.

    Signed-off-by: Tudor Ambarus
    Reviewed-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    Tudor-Dan Ambarus
     
  • For SEC 2.x+, cipher in length must contain only the ciphertext length.
    In case of using hardware ICV checking, the ICV length is provided via
    the "extent" field of the descriptor pointer.

    Cc: # 4.8+
    Fixes: 549bd8bc5987 ("crypto: talitos - Implement AEAD for SEC1 using HMAC_SNOOP_NO_AFEU")
    Reported-by: Horia Geantă
    Signed-off-by: Christophe Leroy
    Tested-by: Horia Geantă
    Signed-off-by: Herbert Xu

    LEROY Christophe
     

23 Mar, 2018

1 commit


09 Mar, 2018

2 commits

  • req_ctx->hw_context is mainly used only by the HW. So it is not needed
    to sync the HW and the CPU each time hw_context in DMA mapped.
    This patch modifies the DMA mapping in order to limit synchronisation
    to necessary situations.

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • Commit 49f9783b0cea ("crypto: talitos - do hw_context DMA mapping
    outside the requests") introduced a persistent dma mapping of
    req_ctx->hw_context
    Commit 37b5e8897eb5 ("crypto: talitos - chain in buffered data for ahash
    on SEC1") introduced a persistent dma mapping of req_ctx->buf

    As there is no destructor for req_ctx (the request context), the
    associated dma handlers where set in ctx (the tfm context). This is
    wrong as several hash operations can run with the same ctx.

    This patch removes this persistent mapping.

    Reported-by: Horia Geanta
    Cc:
    Fixes: 49f9783b0cea ("crypto: talitos - do hw_context DMA mapping outside the requests")
    Fixes: 37b5e8897eb5 ("crypto: talitos - chain in buffered data for ahash on SEC1")
    Signed-off-by: Christophe Leroy
    Tested-by: Horia Geantă
    Signed-off-by: Herbert Xu

    LEROY Christophe
     

08 Feb, 2018

1 commit

  • Performing the hash of an empty file leads to a kernel Oops

    [ 44.504600] Unable to handle kernel paging request for data at address 0x0000000c
    [ 44.512819] Faulting instruction address: 0xc02d2be8
    [ 44.524088] Oops: Kernel access of bad area, sig: 11 [#1]
    [ 44.529171] BE PREEMPT CMPC885
    [ 44.532232] CPU: 0 PID: 491 Comm: md5sum Not tainted 4.15.0-rc8-00211-g3a968610b6ea #81
    [ 44.540814] NIP: c02d2be8 LR: c02d2984 CTR: 00000000
    [ 44.545812] REGS: c6813c90 TRAP: 0300 Not tainted (4.15.0-rc8-00211-g3a968610b6ea)
    [ 44.554223] MSR: 00009032 CR: 48222822 XER: 20000000
    [ 44.560855] DAR: 0000000c DSISR: c0000000
    [ 44.560855] GPR00: c02d28fc c6813d40 c6828000 c646fa40 00000001 00000001 00000001 00000000
    [ 44.560855] GPR08: 0000004c 00000000 c000bfcc 00000000 28222822 100280d4 00000000 10020008
    [ 44.560855] GPR16: 00000000 00000020 00000000 00000000 10024008 00000000 c646f9f0 c6179a10
    [ 44.560855] GPR24: 00000000 00000001 c62f0018 c6179a10 00000000 c6367a30 c62f0000 c646f9c0
    [ 44.598542] NIP [c02d2be8] ahash_process_req+0x448/0x700
    [ 44.603751] LR [c02d2984] ahash_process_req+0x1e4/0x700
    [ 44.608868] Call Trace:
    [ 44.611329] [c6813d40] [c02d28fc] ahash_process_req+0x15c/0x700 (unreliable)
    [ 44.618302] [c6813d90] [c02060c4] hash_recvmsg+0x11c/0x210
    [ 44.623716] [c6813db0] [c0331354] ___sys_recvmsg+0x98/0x138
    [ 44.629226] [c6813eb0] [c03332c0] __sys_recvmsg+0x40/0x84
    [ 44.634562] [c6813f10] [c03336c0] SyS_socketcall+0xb8/0x1d4
    [ 44.640073] [c6813f40] [c000d1ac] ret_from_syscall+0x0/0x38
    [ 44.645530] Instruction dump:
    [ 44.648465] 38c00001 7f63db78 4e800421 7c791b78 54690ffe 0f090000 80ff0190 2f870000
    [ 44.656122] 40befe50 2f990001 409e0210 813f01bc b39e003a 7d29c214 913e003c

    This patch fixes that Oops by checking if src is NULL.

    Fixes: 6a1e8d14156d4 ("crypto: talitos - making mapping helpers more generic")
    Cc:
    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     

03 Nov, 2017

1 commit


12 Oct, 2017

18 commits

  • This patch avoids copy of buffered data to hash from bufnext to buf

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • SEC1 doesn't support S/G in descriptors so for hash operations,
    the CPU has to build a buffer containing the buffered block and
    the incoming data. This generates a lot of memory copies which
    represents more than 50% of CPU time of a md5sum operation as
    shown below with a 'perf record'.

    |--86.24%-- kcapi_md_digest
    | |
    | |--86.18%-- _kcapi_common_vmsplice_chunk_fd
    | | |
    | | |--83.68%-- splice
    | | | |
    | | | |--83.59%-- ret_from_syscall
    | | | | |
    | | | | |--83.52%-- sys_splice
    | | | | | |
    | | | | | |--83.49%-- splice_from_pipe
    | | | | | | |
    | | | | | | |--83.04%-- __splice_from_pipe
    | | | | | | | |
    | | | | | | | |--80.67%-- pipe_to_sendpage
    | | | | | | | | |
    | | | | | | | | |--78.25%-- hash_sendpage
    | | | | | | | | | |
    | | | | | | | | | |--60.08%-- ahash_process_req
    | | | | | | | | | | |
    | | | | | | | | | | |--56.36%-- sg_copy_buffer
    | | | | | | | | | | | |
    | | | | | | | | | | | |--55.29%-- memcpy
    | | | | | | | | | | | |

    However, unlike SEC2+, SEC1 offers the possibility to chain
    descriptors. It is therefore possible to build a first descriptor
    pointing to the buffered data and a second descriptor pointing to
    the incoming data, hence avoiding the memory copy to a single
    buffer.

    With this patch, the time necessary for a md5sum on a 90Mbytes file
    is approximately 3 seconds. Without the patch it takes 6 seconds.

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • At every request, we map and unmap the same hash hw_context.

    This patch moves the dma mapping/unmapping in functions ahash_init()
    and ahash_import().

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • dma_map_single() is an heavy operation which doesn't need to
    be done at each request as the key doesn't change.

    Instead of DMA mapping the key at every request, this patch maps it
    once in setkey()

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • Do (desc->hdr & DESC_HDR_TYPE_IPSEC_ESP) only once.
    Limit number of if/else paths

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • to_talitos_ptr() and to_talitos_ptr_len() are always called together
    in order to fully set a ptr, so lets merge them into a single
    helper.

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • The number of channels is known from the beginning, no need to
    test it everytime.
    This patch defines two additional done functions handling only channel 0.
    Then the probe registers the correct one based on the number of channels.

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • Use devm_ioremap()

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • Use of_property_read_u32() to simplify DT read

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • Replace kmalloc() by devm_kmalloc()

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • talitos_handle_buggy_hash() and talitos_sg_map() are only used
    locally, make them static

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • This patch zeroize the descriptor at allocation using memset().
    This has two advantages:
    - It reduces the number of places where data has to be set to 0
    - It avoids reading memory and loading the cache with data that
    will be entirely replaced.

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • ctr-aes-talitos test fails as follows on SEC2

    [ 0.837427] alg: skcipher: Test 1 failed (invalid result) on encryption for ctr-aes-talitos
    [ 0.845763] 00000000: 16 36 d5 ee 34 f8 06 25 d7 7f 8e 56 ca 88 43 45
    [ 0.852345] 00000010: f9 3f f7 17 2a b2 12 23 30 43 09 15 82 dd e1 97
    [ 0.858940] 00000020: a7 f7 32 b5 eb 25 06 13 9a ec f5 29 25 f8 4d 66
    [ 0.865366] 00000030: b0 03 5b 8e aa 9a 42 b6 19 33 8a e2 9d 65 96 95

    This patch fixes the descriptor type which is special for CTR AES

    Fixes: 5e75ae1b3cef6 ("crypto: talitos - add new crypto modes")
    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • sg_link_tbl_len shall be used instead of cryptlen, otherwise
    SECs which perform HW CICV verification will fail.

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • sha224 AEAD test fails with:

    [ 2.803125] talitos ff020000.crypto: DEUISR 0x00000000_00000000
    [ 2.808743] talitos ff020000.crypto: MDEUISR 0x80100000_00000000
    [ 2.814678] talitos ff020000.crypto: DESCBUF 0x20731f21_00000018
    [ 2.820616] talitos ff020000.crypto: DESCBUF 0x0628d64c_00000010
    [ 2.826554] talitos ff020000.crypto: DESCBUF 0x0631005c_00000018
    [ 2.832492] talitos ff020000.crypto: DESCBUF 0x0628d664_00000008
    [ 2.838430] talitos ff020000.crypto: DESCBUF 0x061b13a0_00000080
    [ 2.844369] talitos ff020000.crypto: DESCBUF 0x0631006c_00000080
    [ 2.850307] talitos ff020000.crypto: DESCBUF 0x0631006c_00000018
    [ 2.856245] talitos ff020000.crypto: DESCBUF 0x063100ec_00000000
    [ 2.884972] talitos ff020000.crypto: failed to reset channel 0
    [ 2.890503] talitos ff020000.crypto: done overflow, internal time out, or rngu error: ISR 0x20000000_00020000
    [ 2.900652] alg: aead: encryption failed on test 1 for authenc-hmac-sha224-cbc-3des-talitos: ret=22

    This is due to SHA224 not being supported by the HW. Allthough for
    hash we are able to init the hash context by SW, it is not
    possible for AEAD. Therefore SHA224 AEAD has to be deactivated.

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • Crypto manager test report the following failures:
    [ 3.061081] alg: skcipher: setkey failed on test 5 for ecb-des-talitos: flags=100
    [ 3.069342] alg: skcipher-ddst: setkey failed on test 5 for ecb-des-talitos: flags=100
    [ 3.077754] alg: skcipher-ddst: setkey failed on test 5 for ecb-des-talitos: flags=100

    This is due to setkey being expected to detect weak keys.

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • On SEC2, when using the old descriptors type (hmac snoop no afeu)
    for doing IPsec, the CICV out pointeur points out of the allocated
    memory.

    [ 2.502554] =============================================================================
    [ 2.510740] BUG dma-kmalloc-256 (Not tainted): Redzone overwritten
    [ 2.516907] -----------------------------------------------------------------------------
    [ 2.516907]
    [ 2.526535] Disabling lock debugging due to kernel taint
    [ 2.531845] INFO: 0xde858108-0xde85810b. First byte 0xf8 instead of 0xcc
    [ 2.538549] INFO: Allocated in 0x806181a9 age=0 cpu=0 pid=58
    [ 2.544229] __kmalloc+0x374/0x564
    [ 2.547649] talitos_edesc_alloc+0x17c/0x48c
    [ 2.551929] aead_edesc_alloc+0x80/0x154
    [ 2.555863] aead_encrypt+0x30/0xe0
    [ 2.559368] __test_aead+0x5a0/0x1f3c
    [ 2.563042] test_aead+0x2c/0x110
    [ 2.566371] alg_test_aead+0x5c/0xf4
    [ 2.569958] alg_test+0x1dc/0x5a0
    [ 2.573305] cryptomgr_test+0x50/0x70
    [ 2.576984] kthread+0xd8/0x134
    [ 2.580155] ret_from_kernel_thread+0x5c/0x64
    [ 2.584534] INFO: Freed in ipsec_esp_encrypt_done+0x130/0x240 age=6 cpu=0 pid=0
    [ 2.591839] ipsec_esp_encrypt_done+0x130/0x240
    [ 2.596395] flush_channel+0x1dc/0x488
    [ 2.600161] talitos2_done_4ch+0x30/0x200
    [ 2.604185] tasklet_action+0xa0/0x13c
    [ 2.607948] __do_softirq+0x148/0x6cc
    [ 2.611623] irq_exit+0xc0/0x124
    [ 2.614869] call_do_irq+0x24/0x3c
    [ 2.618292] do_IRQ+0x78/0x108
    [ 2.621369] ret_from_except+0x0/0x14
    [ 2.625055] finish_task_switch+0x58/0x350
    [ 2.629165] schedule+0x80/0x134
    [ 2.632409] schedule_preempt_disabled+0x38/0xc8
    [ 2.637042] cpu_startup_entry+0xe4/0x190
    [ 2.641074] start_kernel+0x3f4/0x408
    [ 2.644741] 0x3438
    [ 2.646857] INFO: Slab 0xdffbdb00 objects=9 used=1 fp=0xde8581c0 flags=0x0080
    [ 2.653978] INFO: Object 0xde858008 @offset=8 fp=0xca4395df
    [ 2.653978]
    [ 2.661032] Redzone de858000: cc cc cc cc cc cc cc cc ........
    [ 2.669029] Object de858008: 00 00 00 02 00 00 00 02 00 6b 6b 6b 1e 83 ea 28 .........kkk...(
    [ 2.677628] Object de858018: 00 00 00 70 1e 85 80 64 ff 73 1d 21 6b 6b 6b 6b ...p...d.s.!kkkk
    [ 2.686228] Object de858028: 00 20 00 00 1e 84 17 24 00 10 00 00 1e 85 70 00 . .....$......p.
    [ 2.694829] Object de858038: 00 18 00 00 1e 84 17 44 00 08 00 00 1e 83 ea 28 .......D.......(
    [ 2.703430] Object de858048: 00 80 00 00 1e 84 f0 00 00 80 00 00 1e 85 70 10 ..............p.
    [ 2.712030] Object de858058: 00 20 6b 00 1e 85 80 f4 6b 6b 6b 6b 00 80 02 00 . k.....kkkk....
    [ 2.720629] Object de858068: 1e 84 f0 00 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b ....kkkkkkkkkkkk
    [ 2.729230] Object de858078: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
    [ 2.737830] Object de858088: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
    [ 2.746429] Object de858098: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
    [ 2.755029] Object de8580a8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
    [ 2.763628] Object de8580b8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
    [ 2.772229] Object de8580c8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
    [ 2.780829] Object de8580d8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
    [ 2.789430] Object de8580e8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 73 b0 ea 9f kkkkkkkkkkkks...
    [ 2.798030] Object de8580f8: e8 18 80 d6 56 38 44 c0 db e3 4f 71 f7 ce d1 d3 ....V8D...Oq....
    [ 2.806629] Redzone de858108: f8 bd 3e 4f ..>O
    [ 2.814279] Padding de8581b0: 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZ
    [ 2.822283] CPU: 0 PID: 0 Comm: swapper Tainted: G B 4.9.50-g995be12679 #179
    [ 2.831819] Call Trace:
    [ 2.834301] [dffefd20] [c01aa9a8] check_bytes_and_report+0x100/0x194 (unreliable)
    [ 2.841801] [dffefd50] [c01aac3c] check_object+0x200/0x530
    [ 2.847306] [dffefd80] [c01ae584] free_debug_processing+0x290/0x690
    [ 2.853585] [dffefde0] [c01aec8c] __slab_free+0x308/0x628
    [ 2.859000] [dffefe80] [c05057f4] ipsec_esp_encrypt_done+0x130/0x240
    [ 2.865378] [dffefeb0] [c05002c4] flush_channel+0x1dc/0x488
    [ 2.870968] [dffeff10] [c05007a8] talitos2_done_4ch+0x30/0x200
    [ 2.876814] [dffeff30] [c002fe38] tasklet_action+0xa0/0x13c
    [ 2.882399] [dffeff60] [c002f118] __do_softirq+0x148/0x6cc
    [ 2.887896] [dffeffd0] [c002f954] irq_exit+0xc0/0x124
    [ 2.892968] [dffefff0] [c0013adc] call_do_irq+0x24/0x3c
    [ 2.898213] [c0d4be00] [c000757c] do_IRQ+0x78/0x108
    [ 2.903113] [c0d4be30] [c0015c08] ret_from_except+0x0/0x14
    [ 2.908634] --- interrupt: 501 at finish_task_switch+0x70/0x350
    [ 2.908634] LR = finish_task_switch+0x58/0x350
    [ 2.919327] [c0d4bf20] [c085e1d4] schedule+0x80/0x134
    [ 2.924398] [c0d4bf50] [c085e2c0] schedule_preempt_disabled+0x38/0xc8
    [ 2.930853] [c0d4bf60] [c007f064] cpu_startup_entry+0xe4/0x190
    [ 2.936707] [c0d4bfb0] [c096c434] start_kernel+0x3f4/0x408
    [ 2.942198] [c0d4bff0] [00003438] 0x3438
    [ 2.946137] FIX dma-kmalloc-256: Restoring 0xde858108-0xde85810b=0xcc
    [ 2.946137]
    [ 2.954158] FIX dma-kmalloc-256: Object at 0xde858008 not freed

    This patch reworks the handling of the CICV out in order
    to properly handle all cases.

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • AEAD tests fail when destination SG list has more than 1 element.

    [ 2.058752] alg: aead: Test 1 failed on encryption for authenc-hmac-sha1-cbc-aes-talitos
    [ 2.066965] 00000000: 53 69 6e 67 6c 65 20 62 6c 6f 63 6b 20 6d 73 67
    00000010: c0 43 ff 74 c0 43 ff e0 de 83 d1 20 de 84 8e 54
    00000020: de 83 d7 c4
    [ 2.082138] alg: aead: Test 1 failed on encryption for authenc-hmac-sha1-cbc-aes-talitos
    [ 2.090435] 00000000: 53 69 6e 67 6c 65 20 62 6c 6f 63 6b 20 6d 73 67
    00000010: de 84 ea 58 c0 93 1a 24 de 84 e8 59 de 84 f1 20
    00000020: 00 00 00 00
    [ 2.105721] alg: aead: Test 1 failed on encryption for authenc-hmac-sha1-cbc-3des-talitos
    [ 2.114259] 00000000: 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72 73 74
    00000010: 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63 74 65
    00000020: 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72
    00000030: 73 74 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63
    00000040: 74 65 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65
    00000050: 65 72 73 74 54 20 6f 6f 4d 20 6e 61 20 79 65 53
    00000060: 72 63 74 65 20 73 6f 54 20 6f 61 4d 79 6e 53 20
    00000070: 63 65 65 72 73 74 54 20 6f 6f 4d 20 6e 61 0a 79
    00000080: c0 50 f1 ac c0 50 f3 38 c0 50 f3 94 c0 50 f5 30
    00000090: c0 99 74 3c
    [ 2.166410] alg: aead: Test 1 failed on encryption for authenc-hmac-sha1-cbc-3des-talitos
    [ 2.174794] 00000000: 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72 73 74
    00000010: 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63 74 65
    00000020: 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72
    00000030: 73 74 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63
    00000040: 74 65 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65
    00000050: 65 72 73 74 54 20 6f 6f 4d 20 6e 61 20 79 65 53
    00000060: 72 63 74 65 20 73 6f 54 20 6f 61 4d 79 6e 53 20
    00000070: 63 65 65 72 73 74 54 20 6f 6f 4d 20 6e 61 0a 79
    00000080: c0 50 f1 ac c0 50 f3 38 c0 50 f3 94 c0 50 f5 30
    00000090: c0 99 74 3c
    [ 2.226486] alg: No test for authenc(hmac(sha224),cbc(aes)) (authenc-hmac-sha224-cbc-aes-talitos)
    [ 2.236459] alg: No test for authenc(hmac(sha224),cbc(aes)) (authenc-hmac-sha224-cbc-aes-talitos)
    [ 2.247196] alg: aead: Test 1 failed on encryption for authenc-hmac-sha224-cbc-3des-talitos
    [ 2.255555] 00000000: 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72 73 74
    00000010: 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63 74 65
    00000020: 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72
    00000030: 73 74 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63
    00000040: 74 65 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65
    00000050: 65 72 73 74 54 20 6f 6f 4d 20 6e 61 20 79 65 53
    00000060: 72 63 74 65 20 73 6f 54 20 6f 61 4d 79 6e 53 20
    00000070: 63 65 65 72 73 74 54 20 6f 6f 4d 20 6e 61 0a 79
    00000080: c0 50 f1 ac c0 50 f3 38 c0 50 f3 94 c0 50 f5 30
    00000090: c0 99 74 3c c0 96 e5 b8
    [ 2.309004] alg: aead: Test 1 failed on encryption for authenc-hmac-sha224-cbc-3des-talitos
    [ 2.317562] 00000000: 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72 73 74
    00000010: 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63 74 65
    00000020: 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72
    00000030: 73 74 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63
    00000040: 74 65 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65
    00000050: 65 72 73 74 54 20 6f 6f 4d 20 6e 61 20 79 65 53
    00000060: 72 63 74 65 20 73 6f 54 20 6f 61 4d 79 6e 53 20
    00000070: 63 65 65 72 73 74 54 20 6f 6f 4d 20 6e 61 0a 79
    00000080: c0 50 f1 ac c0 50 f3 38 c0 50 f3 94 c0 50 f5 30
    00000090: c0 99 74 3c c0 96 e5 b8
    [ 2.370710] alg: aead: Test 1 failed on encryption for authenc-hmac-sha256-cbc-aes-talitos
    [ 2.379177] 00000000: 53 69 6e 67 6c 65 20 62 6c 6f 63 6b 20 6d 73 67
    00000010: 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63 74 65
    00000020: 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72
    [ 2.397863] alg: aead: Test 1 failed on encryption for authenc-hmac-sha256-cbc-aes-talitos
    [ 2.406134] 00000000: 53 69 6e 67 6c 65 20 62 6c 6f 63 6b 20 6d 73 67
    00000010: 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63 74 65
    00000020: 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72
    [ 2.424789] alg: aead: Test 1 failed on encryption for authenc-hmac-sha256-cbc-3des-talitos
    [ 2.433491] 00000000: 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72 73 74
    00000010: 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63 74 65
    00000020: 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72
    00000030: 73 74 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63
    00000040: 74 65 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65
    00000050: 65 72 73 74 54 20 6f 6f 4d 20 6e 61 20 79 65 53
    00000060: 72 63 74 65 20 73 6f 54 20 6f 61 4d 79 6e 53 20
    00000070: 63 65 65 72 73 74 54 20 6f 6f 4d 20 6e 61 0a 79
    00000080: c0 50 f1 ac c0 50 f3 38 c0 50 f3 94 c0 50 f5 30
    00000090: c0 99 74 3c c0 96 e5 b8 c0 96 e9 20 c0 00 3d dc
    [ 2.488832] alg: aead: Test 1 failed on encryption for authenc-hmac-sha256-cbc-3des-talitos
    [ 2.497387] 00000000: 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72 73 74
    00000010: 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63 74 65
    00000020: 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72
    00000030: 73 74 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63
    00000040: 74 65 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65
    00000050: 65 72 73 74 54 20 6f 6f 4d 20 6e 61 20 79 65 53
    00000060: 72 63 74 65 20 73 6f 54 20 6f 61 4d 79 6e 53 20
    00000070: 63 65 65 72 73 74 54 20 6f 6f 4d 20 6e 61 0a 79
    00000080: c0 50 f1 ac c0 50 f3 38 c0 50 f3 94 c0 50 f5 30
    00000090: c0 99 74 3c c0 96 e5 b8 c0 96 e9 20 c0 00 3d dc

    This patch fixes that.

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     

20 Sep, 2017

3 commits

  • Today, md5sum fails with error -ENOKEY because a setkey
    function is set for non hmac hashing algs, see strace output below:

    mmap(NULL, 378880, PROT_READ, MAP_SHARED, 6, 0) = 0x77f50000
    accept(3, 0, NULL) = 7
    vmsplice(5, [{"bin/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 378880}], 1, SPLICE_F_MORE|SPLICE_F_GIFT) = 262144
    splice(4, NULL, 7, NULL, 262144, SPLICE_F_MORE) = -1 ENOKEY (Required key not available)
    write(2, "Generation of hash for file kcap"..., 50) = 50
    munmap(0x77f50000, 378880) = 0

    This patch ensures that setkey() function is set only
    for hmac hashing.

    Cc:
    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • md5sum on some files gives wrong result

    Exemple:

    With the md5sum from libkcapi:
    c15115c05bad51113f81bdaee735dd09 test

    With the original md5sum:
    bbdf41d80ba7e8b2b7be3a0772be76cb test

    This patch fixes this issue

    Cc:
    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • Kernel crypto tests report the following error at startup

    [ 2.752626] alg: hash: Test 4 failed for sha224-talitos
    [ 2.757907] 00000000: 30 e2 86 e2 e7 8a dd 0d d7 eb 9f d5 83 fe f1 b0
    00000010: 2d 5a 6c a5 f9 55 ea fd 0e 72 05 22

    This patch fixes it

    Cc:
    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     

19 Jun, 2017

1 commit

  • An updated patch that also handles the additional key length requirements
    for the AEAD algorithms.

    The max keysize is not 96. For SHA384/512 it's 128, and for the AEAD
    algorithms it's longer still. Extend the max keysize for the
    AEAD size for AES256 + HMAC(SHA512).

    Cc: # 3.6+
    Fixes: 357fb60502ede ("crypto: talitos - add sha224, sha384 and sha512 to existing AEAD algorithms")
    Signed-off-by: Martin Hicks
    Acked-by: Horia Geantă
    Signed-off-by: Herbert Xu

    Martin Hicks
     

13 Nov, 2016

1 commit


08 Jun, 2016

2 commits

  • This will allow IPSEC on SEC1

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • SEC1 doesn't have IPSEC_ESP descriptor type but it is able to perform
    IPSEC using HMAC_SNOOP_NO_AFEU, which is also existing on SEC2
    In order to be able to define descriptors templates for SEC1 without
    breaking SEC2+, we have to give lower priority to HMAC_SNOOP_NO_AFEU
    so that SEC2+ selects IPSEC_ESP and not HMAC_SNOOP_NO_AFEU which is
    less performant.

    This is done by adding a priority field in the template. If the field
    is 0, we use the default priority, otherwise we used the one in the
    field.

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe