lkml.org 
[lkml]   [2020]   [Apr]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 169/232] crypto: caam - update xts sector size for large input length
    Date
    From: Andrei Botila <andrei.botila@nxp.com>

    commit 3f142b6a7b573bde6cff926f246da05652c61eb4 upstream.

    Since in the software implementation of XTS-AES there is
    no notion of sector every input length is processed the same way.
    CAAM implementation has the notion of sector which causes different
    results between the software implementation and the one in CAAM
    for input lengths bigger than 512 bytes.
    Increase sector size to maximum value on 16 bits.

    Fixes: c6415a6016bf ("crypto: caam - add support for acipher xts(aes)")
    Cc: <stable@vger.kernel.org> # v4.12+
    Signed-off-by: Andrei Botila <andrei.botila@nxp.com>
    Reviewed-by: Horia Geantă <horia.geanta@nxp.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/crypto/caam/caamalg_desc.c | 16 ++++++++++++++--
    1 file changed, 14 insertions(+), 2 deletions(-)

    --- a/drivers/crypto/caam/caamalg_desc.c
    +++ b/drivers/crypto/caam/caamalg_desc.c
    @@ -1524,7 +1524,13 @@ EXPORT_SYMBOL(cnstr_shdsc_skcipher_decap
    */
    void cnstr_shdsc_xts_skcipher_encap(u32 * const desc, struct alginfo *cdata)
    {
    - __be64 sector_size = cpu_to_be64(512);
    + /*
    + * Set sector size to a big value, practically disabling
    + * sector size segmentation in xts implementation. We cannot
    + * take full advantage of this HW feature with existing
    + * crypto API / dm-crypt SW architecture.
    + */
    + __be64 sector_size = cpu_to_be64(BIT(15));
    u32 *key_jump_cmd;

    init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX);
    @@ -1577,7 +1583,13 @@ EXPORT_SYMBOL(cnstr_shdsc_xts_skcipher_e
    */
    void cnstr_shdsc_xts_skcipher_decap(u32 * const desc, struct alginfo *cdata)
    {
    - __be64 sector_size = cpu_to_be64(512);
    + /*
    + * Set sector size to a big value, practically disabling
    + * sector size segmentation in xts implementation. We cannot
    + * take full advantage of this HW feature with existing
    + * crypto API / dm-crypt SW architecture.
    + */
    + __be64 sector_size = cpu_to_be64(BIT(15));
    u32 *key_jump_cmd;

    init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX);

    \
     
     \ /
      Last update: 2020-04-16 17:17    [W:4.056 / U:0.312 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site