[PATCH 5/6] staging: lustre: Use ahash

Greg KH greg at kroah.com
Wed Feb 3 22:48:57 UTC 2016


On Mon, Feb 01, 2016 at 09:36:53PM +0800, Herbert Xu wrote:
> This patch replaces uses of the long obsolete hash interface with
> ahash.
> 
> Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
> ---
> 
>  drivers/staging/lustre/lustre/libcfs/linux/linux-crypto.c |   92 +++++++-------
>  1 file changed, 52 insertions(+), 40 deletions(-)
> 
> diff --git a/drivers/staging/lustre/lustre/libcfs/linux/linux-crypto.c b/drivers/staging/lustre/lustre/libcfs/linux/linux-crypto.c
> index 079d50e..94c01aa 100644
> --- a/drivers/staging/lustre/lustre/libcfs/linux/linux-crypto.c
> +++ b/drivers/staging/lustre/lustre/libcfs/linux/linux-crypto.c
> @@ -27,7 +27,7 @@
>   * Copyright (c) 2012, Intel Corporation.
>   */
>  
> -#include <linux/crypto.h>
> +#include <crypto/hash.h>
>  #include <linux/scatterlist.h>
>  #include "../../../include/linux/libcfs/libcfs.h"
>  #include "linux-crypto.h"
> @@ -38,9 +38,11 @@ static int cfs_crypto_hash_speeds[CFS_HASH_ALG_MAX];
>  
>  static int cfs_crypto_hash_alloc(unsigned char alg_id,
>  				 const struct cfs_crypto_hash_type **type,
> -				 struct hash_desc *desc, unsigned char *key,
> +				 struct ahash_request **req,
> +				 unsigned char *key,
>  				 unsigned int key_len)
>  {
> +	struct crypto_ahash *tfm;
>  	int     err = 0;
>  
>  	*type = cfs_crypto_hash_type(alg_id);
> @@ -50,18 +52,23 @@ static int cfs_crypto_hash_alloc(unsigned char alg_id,
>  		      alg_id, CFS_HASH_ALG_MAX);
>  		return -EINVAL;
>  	}
> -	desc->tfm = crypto_alloc_hash((*type)->cht_name, 0, 0);
> +	tfm = crypto_alloc_ahash((*type)->cht_name, 0, CRYPTO_ALG_ASYNC);
>  
> -	if (desc->tfm == NULL)
> -		return -EINVAL;
> -
> -	if (IS_ERR(desc->tfm)) {
> +	if (IS_ERR(tfm)) {
>  		CDEBUG(D_INFO, "Failed to alloc crypto hash %s\n",
>  		       (*type)->cht_name);
> -		return PTR_ERR(desc->tfm);
> +		return PTR_ERR(tfm);
>  	}
>  
> -	desc->flags = 0;
> +	*req = ahash_request_alloc(tfm, GFP_KERNEL);
> +	if (!*req) {
> +		CDEBUG(D_INFO, "Failed to alloc ahash_request for %s\n",
> +		       (*type)->cht_name);
> +		crypto_free_ahash(tfm);
> +		return -ENOMEM;
> +	}
> +
> +	ahash_request_set_callback(*req, 0, NULL, NULL);
>  
>  	/** Shash have different logic for initialization then digest
>  	 * shash: crypto_hash_setkey, crypto_hash_init
> @@ -70,23 +77,27 @@ static int cfs_crypto_hash_alloc(unsigned char alg_id,
>  	 * cfs_crypto_hash_alloc.
>  	 */
>  	if (key != NULL)
> -		err = crypto_hash_setkey(desc->tfm, key, key_len);
> +		err = crypto_ahash_setkey(tfm, key, key_len);
>  	else if ((*type)->cht_key != 0)
> -		err = crypto_hash_setkey(desc->tfm,
> +		err = crypto_ahash_setkey(tfm,
>  					 (unsigned char *)&((*type)->cht_key),
>  					 (*type)->cht_size);
>  
>  	if (err != 0) {
> -		crypto_free_hash(desc->tfm);
> +		crypto_free_ahash(tfm);
>  		return err;
>  	}
>  
>  	CDEBUG(D_INFO, "Using crypto hash: %s (%s) speed %d MB/s\n",
> -	       (crypto_hash_tfm(desc->tfm))->__crt_alg->cra_name,
> -	       (crypto_hash_tfm(desc->tfm))->__crt_alg->cra_driver_name,
> +	       crypto_ahash_alg_name(tfm), crypto_ahash_driver_name(tfm),

This change breaks the build for me so I can't take this through my
tree.  I'm hoping you have a patch earlier in the series that adds these
functions, if so, feel free to take this through your tree:

Acked-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>


More information about the devel mailing list