[dm-devel] [PATCH] dm crypt: log the encryption algorithm implementation

Ard Biesheuvel ard.biesheuvel at linaro.org
Thu Dec 6 07:28:01 UTC 2018


On Thu, 6 Dec 2018 at 05:54, Eric Biggers <ebiggers at kernel.org> wrote:
>
> From: Eric Biggers <ebiggers at google.com>
>
> Log the encryption algorithm's driver name when a dm-crypt target is
> created.  This will help people determine whether the expected
> implementation is being used.  In some cases we've seen people do
> benchmarks and reject using encryption for performance reasons, when in
> fact they used a much slower implementation than was possible on the
> hardware.  It can make an enormous difference; e.g., AES-XTS on ARM can
> be over 10x faster with the crypto extensions than without.  It can also
> be useful to know if an implementation using an external crypto
> accelerator is being used instead of a software implementation.
>
> Example message:
>
> [   29.307629] device-mapper: crypt: xts(aes) using implementation "xts-aes-ce"
>
> We've already found the similar message in fs/crypto/keyinfo.c to be
> very useful.
>
> Signed-off-by: Eric Biggers <ebiggers at google.com>

Acked-by: Ard Biesheuvel <ard.biesheuvel at linaro.org>

> ---
>  drivers/md/dm-crypt.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
>
> diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
> index b8eec515a003..7646135487be 100644
> --- a/drivers/md/dm-crypt.c
> +++ b/drivers/md/dm-crypt.c
> @@ -1885,6 +1885,13 @@ static int crypt_alloc_tfms_skcipher(struct crypt_config *cc, char *ciphermode)
>                 }
>         }
>
> +       /*
> +        * dm-crypt performance can vary greatly depending on which crypto
> +        * algorithm implementation is used.  Help people debug performance
> +        * problems by logging the ->cra_driver_name.
> +        */
> +       DMINFO("%s using implementation \"%s\"", ciphermode,
> +              crypto_skcipher_alg(any_tfm(cc))->base.cra_driver_name);
>         return 0;
>  }
>
> @@ -1903,6 +1910,8 @@ static int crypt_alloc_tfms_aead(struct crypt_config *cc, char *ciphermode)
>                 return err;
>         }
>
> +       DMINFO("%s using implementation \"%s\"", ciphermode,
> +              crypto_aead_alg(any_tfm_aead(cc))->base.cra_driver_name);
>         return 0;
>  }
>
> --
> 2.19.2
>




More information about the dm-devel mailing list